给出以下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。
答案 0 :(得分:5)
因为
name
属性必须位于Demo
命名空间中,如child
元素。
根据w3c规范,属性不会继承它们所属元素的命名空间,这就是为什么你得到那些正确的结果。
相关文章:http://web.archive.org/web/20170118162309/http://www.xmlplease.com/attributexmlns