人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Ruby の REXML についての質問です。
いろいろ調べましたが分からなかったので質問させていただきます。

<root>
<a>
<b1>
<c>Apple</c>
</b1>
<b2>
<c>Orange</c>
</b2>
</a>
</root>

例えば上記のようなXMLで、文字列「Apple」が root/a/b1/c にあり、
文字列「Orange」が root/a/b2/c にあることはどうやって知れるでしょうか?

つまり、ノードの中身を検索キーにして、
ノードの場所を知る関数とかってあるんでしょうか?

Xpathをかろうじて使ってるくらいの実力ですので、
もし難しい内容なら詳細にお願い致します。

●質問者: RESTfulJapan
●カテゴリ:コンピュータ インターネット
✍キーワード:Apple b2 Orange root Ruby
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● nuna
●60ポイント ベストアンサー

パスは REXML::Element#xpath で取得できますよ。

XPath でノードを探して、そのノードの xpath メソッドを呼んでください。

#!/usr/bin/ruby

require 'rexml/document'

doc = REXML::Document.new(File.new(ARGV.shift))

node = REXML::XPath.first(doc, '//[text()="Apple"]')

puts node.xpath

$ ruby foo.rb bar.xml

/root/a/b1/c

◎質問者からの返答

できました!

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ