XPath选择特定的子元素

时间:2010-03-31 23:34:38

标签: c# xpath

如果我有这样的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);

提前致谢。

3 个答案:

答案 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应该做的伎俩