• ベストアンサー

xpath でn番目のテキストノード取得

xpathで//text()とするとすべてのテキストノードが取得できますが、 この中からn番目のテキストノードを取得することは可能でしょうか? (プログラムでループではなく、xpathで。) <?xml version='1.0'?> <root><foo>aaa</foo><bar>bbb</bar><buz>bbb</buz></root> //text()[1]でaaaがとれるかと思ったんですが。。。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

仕様自体がそうなのか自信ありませんが, とりあえず手元のXMLEDITOR.NETでは (//text())[1]とか(//text())[2]で aaaやbbbが取得できています。 #//text()[1]と書くと //(text()[1])という計算をするみたいです。

momruru
質問者

お礼

ご回答、ありがとうございます。 まさに求めていたものです。 まさかカッコとは。。。演算子の基本でしたね。 情けない。。。 ありがとうございました。

その他の回答 (1)

  • nadera
  • ベストアンサー率83% (5/6)
回答No.1

//*[1]/text() で,どうですか?

momruru
質問者

補足

ご回答、ありがとうございます。 すいません、説明不足+例文が悪かったです。 解析対象が例文のように1階層であれば教えていただいたxpathで可能ですが、 階層が不規則な場合だと、xpathのみで取得というのは無理でしょうかね? あくまで//text()で取得した中でのn番目という意味で。 いずれにしても、//*[1]は思いつかなかったので、参考になりました。 ありがとうございます。