XPath bookstore/book[1]选择下的第一个书籍节点bookstore.
如何选择匹配更复杂条件的第一个节点,例如匹配的第一个节点 /bookstore/book[@location='US']
Jon*_*and 408
使用 (/bookstore/book[@location='US'])[1]
这将首先获得location属性等于'US'的book元素.然后它将从该集合中选择第一个节点.请注意某些实现所需的括号的使用.
(请注意,/bookstore/book[1][@location='US']除非第一个元素恰好具有该位置属性,否则不一样)
小智 167
/bookstore/book[@location='US'][1] 仅适用于简单的结构.
添加更多的结构和事情打破.
同
<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>
Run Code Online (Sandbox Code Playgroud)
/bookstore/category/book[@location='US'][1] 产量
<book location="US">A1</book>
<book location="US">B2</book>
Run Code Online (Sandbox Code Playgroud)
不是"匹配更复杂条件的第一个节点"./bookstore/category/book[@location='US'][2]没有回报.
使用括号,您可以获得原始问题的结果:
(/bookstore/category/book[@location='US'])[1] 给
<book location="US">A1</book>
Run Code Online (Sandbox Code Playgroud)
并按(/bookstore/category/book[@location='US'])[2]预期工作.
Tom*_*lak 47
作为Jonathan Fingland答案的解释:
[position()=1 and @location='US'])中的多个条件必须是整体真实的[position()=1][@location='US'])中的多个条件必须一个接一个地为真[position()=1][@location='US']!= [@location='US'][position()=1][position()=1 and @location='US']==[@location='US' and position()=1][position()=1]可以缩写为[1]你可以建立在谓词复杂的表达式与布尔运算符" and"和" or",并与布尔XPath函数not(),true()和false().另外,您可以将子表达式括在括号中.
Gee*_*Bee 12
查找第一个英文书籍节点(在整个文档中)的最简单方法,考虑更复杂的结构化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>
Run Code Online (Sandbox Code Playgroud)
是xpath表达式:
/descendant::book[@location='US'][1]
Run Code Online (Sandbox Code Playgroud)
<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>
Run Code Online (Sandbox Code Playgroud)
因此,鉴于上述情况;您可以选择第一本书
(//book[@location='US'])[1]
Run Code Online (Sandbox Code Playgroud)
这将在第一个有美国位置的地方找到第一个。[A1]
//book[@location='US']
Run Code Online (Sandbox Code Playgroud)
将返回所有位置为US的书籍的节点集。[A1,B1,C2]
(//category/book[@location='US'])[1]
Run Code Online (Sandbox Code Playgroud)
将返回文档中任何位置的类别中存在的第一本书位置US。[B1]
(/bookstore//book[@location='US'])[1]
Run Code Online (Sandbox Code Playgroud)
将返回根元素书店下任何位置的位置为US的第一本书;使得/ bookstore部分确实多余。[A1]
直接回答:
/bookstore/book[@location='US'][1]
Run Code Online (Sandbox Code Playgroud)
将为您返回书店[A1]下位置为US的书元素的第一个节点
顺便说一句,如果您想在此示例中查找第一本不是书店直接子书的美国图书:
(/bookstore/*//book[@location='US'])[1]
Run Code Online (Sandbox Code Playgroud)
小智 5
如果 xpath 很复杂或存在多个具有相同 xpath 的节点,请使用索引来获取所需的节点。
前任 :
(//bookstore[@location = 'US'])[index]
Run Code Online (Sandbox Code Playgroud)
您可以给出所需节点的编号。
| 归档时间: |
|
| 查看次数: |
382048 次 |
| 最近记录: |