16

XMLとXPathクエリがあります。Yahoo!を使用しています。ウィジェットなので、XPath1.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」ノードが正しいです。

ただし、6つ目だけが必要な場合は、次のことができるようにしたいと思います。

"root/cat/movie/swf[6]"

しかし、0ノードを含むリストを取得します。

奇妙なことに、[1](および他の値なし)を使用すると、42ノードすべてのリストが生成されます。

明らかに、私はここで非常に基本的な何かを見逃しています。誰かがそれが何であるかわかりますか?

4

2 に答える 2

33

あなたが意味するのだろうか:

"root/cat/movie[6]/swf"

(6番目の映画のswfを取得します)

または代わりに:

"(root/cat/movie/swf)[6]"

(すべてのmovie / swf要素を検索し、6番目を選択します)

各映画に正確に1つのswfがある場合、2つは同じです。映画にゼロまたは複数のswf要素がある場合、2つのクエリは微妙に異なります...

于 2009-03-18T11:32:30.603 に答える
9
"root/cat/movie/swf[6]"

コンテキスト内の各6番目<swf>のノードを参照し"root/cat/movie"ます。

<swf>それぞれノードは1つだけです。

あなたが意味するのは:

"root/cat/movie[6]/swf"
于 2009-03-18T11:32:46.513 に答える