xpath获取匹配节点或其子节点的最顶层父节点

时间:2014-01-11 13:24:23

标签: c# xml xpath

我直接在root下有这样的xml节点,

<online.png>
 <createdBy>admin</createdBy>
 <mimeType>image/png</mimeType> // may be here in node itself
 <primaryType>nt:file</primaryType>
 <content>
    <firstName>Vendor</firstName>
    <mimeType>image/png</mimeType>  // may be here in child 
    <city>Hyderabad</city>
 </content>
</online.png>

从这个节点,如何获取top-parent(这里是gif图像节点),不管使用xpath的mimetype位置,我还想首先根据它的值获取节点名称,如search。即,

stirng xpath = select top-paren where element name has value ('image/')
           / --    "//*[contains(text(),'image/')] select top parent"

任何建议都表示赞赏。

XmlNodeList nodeImages = xmlDoc.SelectNodes("//*[contains(text(),'image/')]");

返回内容节点和gif节点。我只想要gif节点

2 个答案:

答案 0 :(得分:0)

假设您的示例中的“ top-parent ”表示<online.png>,答案非常简单:/*[//*[contains(text(), 'image')]] - 换句话说,“任何元素直接包含在根元素中,根元素在任何深度包含一个包含文本'image'的元素“。

答案 1 :(得分:0)

如果你想获得第二级元素(即直接放在root下的元素),其中任何子元素包含文本image/,那么使用xpath:

"/*/*[//*[contains(text(), 'image/')]]"