基本的に、ノードからルートへの絶対パスを抽出して、コンソールまたはファイルに報告したいと思います。以下は現在の解決策です:
require "rexml/document"
include REXML
def get_path(xml_doc, key)
XPath.each(xml_doc, key) do |node|
puts "\"#{node}\""
XPath.each(node, '(ancestor::#node)') do |el|
# puts el
end
end
end
test_doc = Document.new <<EOF
<root>
<level1 key="1" value="B">
<level2 key="12" value="B" />
<level2 key="13" value="B" />
</level1>
</root>
EOF
get_path test_doc, "//*/[@key='12']"
問題は、それが私"<level2 value='B' key='12'/>"
を出力として与えるということです。必要な出力は次<root><level1><level2 value='B' key='12'/>
のとおりです(形式は異なる場合があります。主な目標はフルパスを持つことです)。私はXPathの基本的な知識しか持っていないので、どこを見ればよいか、そしてこれをどのように達成するかについてのヘルプ/ガイダンスをいただければ幸いです。