我有一些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"
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top