XPath bookstore/book[1]选择书店下的第一个图书节点。
如何选择第一个匹配更复杂条件的节点,例如,第一个匹配/bookstore/book[@location='US']的节点
XPath bookstore/book[1]选择书店下的第一个图书节点。
如何选择第一个匹配更复杂条件的节点,例如,第一个匹配/bookstore/book[@location='US']的节点
当前回答
前女友。
<input b="demo">
And
(input[@b='demo'])[1]
其他回答
找到第一个英文book节点的最简单的方法(在整个文档中),考虑到更复杂的结构化xml文件,如:
<bookstore>
<category>
<book location="US">A1</book>
<book location="FIN">A2</book>
</category>
<category>
<book location="FIN">B1</book>
<book location="US">B2</book>
</category>
</bookstore>
是xpath表达式:
/descendant::book[@location='US'][1]
如果xpath很复杂,或者有多个节点使用相同的xpath,则使用索引获取所需的节点。
例:
(//bookstore[@location = 'US'])[index]
你可以给出你想要的节点的编号。
Use:
(/bookstore/book[@location='US'])[1]
这将首先获得位置属性为'US'的book元素。然后它将从该集合中选择第一个节点。注意括号的使用,这是一些实现所需要的。
注意,这与/bookstore/book[1][@location='US']不同,除非第一个元素碰巧也有location属性。
前女友。
<input b="demo">
And
(input[@b='demo'])[1]
<bookstore>
<book location="US">A1</book>
<category>
<book location="US">B1</book>
<book location="FIN">B2</book>
</category>
<section>
<book location="FIN">C1</book>
<book location="US">C2</book>
</section>
</bookstore>
鉴于上述;您可以选择的第一本书
(//book[@location='US'])[1]
这将会在任何有美国的地方找到第一个。(A1)
//book[@location='US']
将返回包含所有位置为US的图书的节点集。(A1, B1, C2)
(//category/book[@location='US'])[1]
将返回文档中任何类别中存在的第一个图书位置US。(B1)
(/bookstore//book[@location='US'])[1]
返回根元素bookstore下存在的位置为US的第一本书;使/bookstore部分变得多余。(A1)
直接回答:
/bookstore/book[@location='US'][1]
返回book元素的第一个节点,位置为US,位于bookstore [A1]
顺便说一句,如果你想在这个例子中找到第一本不是bookstore直接子书店的美国书:
(/bookstore/*//book[@location='US'])[1]