xpath 1.0でn番目のアイテムを選択する方法は?
-
19-08-2019 - |
質問
XMLとXPathクエリがあります。 Yahoo!を使用していますウィジェットなので、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」ノードが正しい。
ただし、6番目のものが必要な場合は、次の操作を実行できます。
"root/cat/movie/swf[6]"
しかし、0個のノードを含むリストを取得します。
奇妙なことに、[1](および他の値なし)を使用すると、42個すべてのノードのリストが得られます。
明らかに、ここには非常に基本的なものがありません。誰もがそれを見ていますか?
解決
どういう意味なのかしら:
"root/cat/movie[6]/swf"
(6番目の映画のswfを取得)
または別の方法:
"(root/cat/movie/swf)[6]"
(movie / swf要素をすべて見つけ、6番目を選択します)
各ムービーにswfが1つだけある場合、2つは同じです。ムービーに0個または複数のswf要素がある場合、2つのクエリは微妙に異なります...
他のヒント
"root/cat/movie/swf[6]"
は、<swf>
コンテキストの各6番目の"root/cat/movie"
ノードを指します。
各<=>ノードは1つのみです。
あなたの言いたいことは:
"root/cat/movie[6]/swf"
所属していません StackOverflow