プロが教える店舗&オフィスのセキュリティ対策術

xpathで//text()とするとすべてのテキストノードが取得できますが、
この中からn番目のテキストノードを取得することは可能でしょうか?
(プログラムでループではなく、xpathで。)

<?xml version='1.0'?>
<root><foo>aaa</foo><bar>bbb</bar><buz>bbb</buz></root>

//text()[1]でaaaがとれるかと思ったんですが。。。

よろしくお願いします。

A 回答 (2件)

仕様自体がそうなのか自信ありませんが,


とりあえず手元のXMLEDITOR.NETでは
(//text())[1]とか(//text())[2]で
aaaやbbbが取得できています。

#//text()[1]と書くと //(text()[1])という計算をするみたいです。
    • good
    • 0
この回答へのお礼

ご回答、ありがとうございます。

まさに求めていたものです。
まさかカッコとは。。。演算子の基本でしたね。
情けない。。。

ありがとうございました。

お礼日時:2009/04/29 21:27

//*[1]/text()


で,どうですか?

この回答への補足

ご回答、ありがとうございます。

すいません、説明不足+例文が悪かったです。

解析対象が例文のように1階層であれば教えていただいたxpathで可能ですが、
階層が不規則な場合だと、xpathのみで取得というのは無理でしょうかね?
あくまで//text()で取得した中でのn番目という意味で。

いずれにしても、//*[1]は思いつかなかったので、参考になりました。
ありがとうございます。

補足日時:2009/04/28 09:23
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!