我有一些XML和一个XPath查询。我正在使用Yahoo!widgets,所以我使用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个节点的列表。
显然,我在这里遗漏了一些非常基本的东西。有人看到这是什么了吗?
发布于 2009-03-18 11:32:31
我想知道你的意思是:
"root/cat/movie[6]/swf"
(获取第六部电影的swf )
或者:
"(root/cat/movie/swf)[6]"
(查找所有电影/swf元素,并选择第6个元素)
当每个电影只有一个swf时,这两个是相同的;如果一个电影有零个或多个swf元素,则两个查询略有不同……
发布于 2009-03-18 11:32:47
"root/cat/movie/swf[6]"
指的是"root/cat/movie"
上下文中的每个第6个<swf>
节点。
每个节点只有一个<swf>
节点。
你的意思是:
"root/cat/movie[6]/swf"
https://stackoverflow.com/questions/657855
复制相似问题