我必须能够解析这两个xml-s:
<!-- Case 1 -->
<root xmlns="http://www.xml.namespace/111111">
<dataObject id="Id1" name="Name1" xmlns="http://www.xml.namespace/222222" />
</root>
<!-- Case 2 -->
<root xmlns:myNs="http://www.xml.namespace/222222">
<myNs:dataObject myNs:id="Id1" myNs:name="Name1" />
</root>我必须(通过XmlSerializer)将<dataObject>解析成一个C#模型类,它具有以下内容:
[XmlAttribute(AttributeName = "id", Namespace="http://www.xml.namespace/222222")]
public string Id { get; set; }但它只适用于Case 2,不适用于Case 1。
所以我用下面的代码检查了Case 1:
var xmlString = @"<dataObject id=""Id1"" name=""Name1"" xmlns=""http://www.xml.namespace/222222"" />";
var xElement = XElement.Parse(xmlString);
var idAttribute = xElement.FirstAttribute;
Console.WriteLine(idAttribute.Name.Namespace); // ""
Console.WriteLine(xElement.Name.Namespace); // "http://www.xml.namespace/222222"在这里,XElement认为它有一个名称空间,而XAttribute认为他们没有。
因此,xml不知何故不知道同级xmlns XAttribute名称空间声明属性。
这是一个bug,还是我做错了什么?
发布于 2017-02-10 20:50:11
https://stackoverflow.com/questions/42142130
复制相似问题