首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XAttribute不知道同级XAttribute是哪个IsNamespaceDeclaration

XAttribute不知道同级XAttribute是哪个IsNamespaceDeclaration
EN

Stack Overflow用户
提问于 2017-02-10 00:38:28
回答 1查看 78关注 0票数 2

我必须能够解析这两个xml-s:

代码语言:javascript
复制
<!-- 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#模型类,它具有以下内容:

代码语言:javascript
复制
[XmlAttribute(AttributeName = "id", Namespace="http://www.xml.namespace/222222")]
public string Id { get; set; }

但它只适用于Case 2,不适用于Case 1

所以我用下面的代码检查了Case 1

代码语言:javascript
复制
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,还是我做错了什么?

EN

回答 1

Stack Overflow用户

发布于 2017-02-10 20:50:11

结果证明这不是一个bug,所描述的行为符合xml规范。

请参见:

XML Default namespaces for unqualified attribute names?

Applying Namespaces to Elements and Attributes

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42142130

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档