如果我有这样的XML树 -
<Parent>
<Image Name="a"/>
<Image Name="b"/>
<Child>
<Image Name="c"/>
<Image Name="d"/>
</Child>
<SomeElem>
<Image Name="h"/>
<Image Name="g"/>
</SomeElem>
<Image Name="e"/>
</Parent>
我想选择除<Image\>
节点中列出的节点之外的所有<Child\>
个节点。
目前我使用查询来选择所有图像节点, -
xElement.XPathSelectElements("//ns:Image", namespace);
提前致谢。
答案 0 :(得分:3)
获取所有Image
个元素,其父元素不是Child
。
//*[not(self::Child)]/Image
编辑1:
下面的这个不会有效,因为在此过程中也会选择Parent
,而Child
不是Child
,而Image是其中一个后代(通过Image
)。< / em>的
<击>
你也可以获得所有Child
元素,其祖先不是//*[not(self::Child)]//Image
<击> Image
击>
编辑2:
这可能最适合所有情况。它获取的所有Child
个节点都不是//Image[not(ancestor::Child)]
的后代。
{{1}}
答案 1 :(得分:0)
如果您只想在根级别选择那些,那么您可以这样做:
xElement.XPathSelectElements("/ns:Image", namespace);
//
告诉xpath引擎查看所有Image
个节点,无论它们的深度如何。
答案 2 :(得分:0)
/ns:Parent/ns:Image
应该做的伎俩