我正在解析一些像这样的XML:
<root>
<some_gunk/>
<dupe_node>
...
stuff I want
...
</dupe_node>
<bits_and_pieces/>
<other_gunk/>
<dupe_node>
...
stuff I don't want
...
</dupe_node>
<more_gunk/>
</root>
Run Code Online (Sandbox Code Playgroud)
一个XPath '//dupe_node'
会给我两个dupe_node
玩的例子.我只想穿越第一个.我可以用XPath做到这一点吗?
小智 43
/descendant::dupe_node[1]
Run Code Online (Sandbox Code Playgroud)
//dupe_node[1]
虽然在这种特殊情况下会产生相同的结果,但通常是错误的.查看文档:
位置路径// para [1]与位置路径/ descendant :: para [1]的含义不同.后者选择第一个后代para元素; 前者选择所有后代的para元素,这些元素是他们父母的第一个孩子.
给出以下XML:
<foo>
<bar/>
<foo>
<bar/>
</foo>
</foo>
Run Code Online (Sandbox Code Playgroud)
//bar[1]
将产生两个节点,因为两个条形图是它们各自父母的第一个子节点.
/descendant::bar[1]
将只提供一个节点,这是文档中所有条形的第一个节点.
//dupe_node[1]
Run Code Online (Sandbox Code Playgroud)
在这种情况下,XPath从1开始计数,而不是0.您可以使用此工具在浏览器中尝试:
http://www.xmlme.com/XpathTool.aspx?mid=82
归档时间: |
|
查看次数: |
26066 次 |
最近记录: |