如何选择XPath 1.0中的第n项?
-
19-08-2019 - |
题
我有一些XML和XPath查询。我使用雅虎窗口小部件,所以我使用XPath 1.0。
下面是我的XML的要点......
<root>
<cat num="SOURCE">
<movie>
<swf>speak.swf</swf>
<width>250</width>
<height>150</height>
<colour>cccccc</colour>
</movie>
<movie>
<swf>inertia.swf</swf>
<width>380</width>
<height>130</height>
<colour>9a9a9a</colour>
</movie>
<movie>
<swf>swing.swf</swf>
<width>380</width>
<height>130</height>
<colour>9A9A9A</colour>
</movie>
....
现在...如果我运行此查询:
"root/cat/movie/swf"
我得到42分的结果,所有的 'SWF' 节点,其是正确的。
但是,如果我只是想六号之一,我希望能够做到:
"root/cat/movie/swf[6]"
,但我得到含有0的节点的列表。
古怪,使用[1](并且没有其他值),得到所有我的42个节点的列表。
显然,我失去了一些东西相当基本这里。任何人看到它是什么?
解决方案
我不知道你的意思是:
"root/cat/movie[6]/swf"
(获取第六电影的SWF)
或可替换地:
"(root/cat/movie/swf)[6]"
(查找所有电影/瑞士法郎元件,并选择第6次)
当每部电影都有一个SWF,这两个是相同的;如果一部电影有零个或多个SWF元素,它们的两个查询是微妙的不同...
其他提示
"root/cat/movie/swf[6]"
指的是每个第六<swf>
节点在"root/cat/movie"
上下文。
您只有一个<swf>
节点中的每个。
你是什么意思是:
"root/cat/movie[6]/swf"
不隶属于 StackOverflow