いろいろ調べましたが分からなかったので質問させていただきます。
<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をかろうじて使ってるくらいの実力ですので、
もし難しい内容なら詳細にお願い致します。
パスは 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
できました!
ありがとうございました!