假设我有这个文件。
<a:Root>
<a:A>
<title><a:B/></title>
<a:C>
<item><a:D/></item>
</a:C>
</a:A>
</a:Root>
我有一个 XmlNode 设置为<a:A>
元素。
如果我说
A.SelectNodes( "//a:*", namespaceManager )
我得到B
,C
和D
. 但我不想要D
,因为它嵌套在另一个“a:”元素中。
如果我说
A.SelectNodes( "//a:*[not(ancestor::a:*)]", namespaceManager )
当然,我什么也得不到,因为 A 和它的父级都在“a”命名空间中。
如何只选择B
and C
,即与命名空间匹配的最浅的孩子?
谢谢。
请注意,这是 XPath 1.0 (.NET 2),所以我不能使用范围内前缀(它看起来会有所帮助)。
此外,这并不是关于名称空间的真正问题。与其他匹配标准相同的困境。