为什么我必须将空名称空间传递给XPathNavigator.GetAttribute?

时间:2009-12-17 15:30:58

标签: .net xml xml-namespaces xpathnavigator

给出以下XML标记:

<root xmlns="Demo">
    <child name="foo"/>
</root>

XPathNavigator位于<child>元素上,

string withNs = navigator.GetAttribute("name", navigator.NamespaceURI);
string withoutNs = navigator.GetAttribute("name", "");

产生奇怪的结果:withNs为空,withoutNs包含foo

为什么?我希望它会反过来,因为name属性必须在Demo名称空间中,如child元素。

MSDN文档没有提到传递namespaceURI=""的任何神奇含义,所以我假设您必须传递属性的真实命名空间URI。

1 个答案:

答案 0 :(得分:5)

  

因为name属性必须位于Demo命名空间中,如child元素。

根据w3c规范,属性不会继承它们所属元素的命名空间,这就是为什么你得到那些正确的结果。

相关文章:http://web.archive.org/web/20170118162309/http://www.xmlplease.com/attributexmlns