XPath查询,尊重节点位置和属性值

时间:2009-06-03 15:28:49

标签: xpath xpathdocument

有没有办法构建一个XPath查询,在某个位置找到一个节点并且具有某个属性值?

考虑以下示例xml:

<Item Type="Book">
<!--1st Param node in a Book item is always the autors last name-->
<Param Value="Updike" />
<!--2nd Param node in a Book item is always the autors first name-->
<Param Value="John" />
<!--3rd Param node in a Book item is always the book title-->
<Param Value="Toward the End of Time" /></Item>

现在我可以构建一个查找以下内容的查询:

查找 Type “Book”的所有 Item 节点,其中第二个 Param 节点的为“约翰”。 所以我想找到作者名字的所有书籍都是“约翰”。

请注意,我使用的是.NET XPathDocument。

3 个答案:

答案 0 :(得分:5)

只有作为书籍的物品的要求怎么样?

试试这个:

/Item[@Type='Book'][Param[2][@Value='John']]

答案 1 :(得分:2)

  

请注意,我使用的是.NET XPathDocument。

仅限于XPath V1。

您可以在谓词中包含(相对和绝对)路径。如下所示:

//Item[@Type='Book'][./Param[2][@Value = 'John']]

(我会尽量避免使用“//”,因为它需要搜索整个DOM,但如果没有更多的上下文,则无法提供更好的轴。)

答案 2 :(得分:0)

表达式为:

//Item/Param[2][@Value='John']