コンテキスト: libxml-ruby gem を使用して XML ファイルを解析しています。find
XPathメソッドを使用して、一連のノードについて XML ドキュメントをクエリする必要があります。find
次に、各ノードを個別に処理し、XPathメソッドを使用してもう一度クエリを実行する必要があります。
問題:返されたノードを個別にクエリしようとすると、XPathfind
メソッドはノードだけでなくドキュメント全体をクエリしています。
コード例:
require 'xml'
string = %{<?xml version="1.0" encoding="iso-8859-1"?>
<bookstore>
<book>
<title lang="eng">Harry Potter</title>
<price>29.99</price>
</book>
<book>
<title lang="eng">Learning XML</title>
<price>39.95</price>
</book>
</bookstore>}
xml = XML::Parser.string(string, :encoding => XML::Encoding::ISO_8859_1).parse
books = xml.find("//book")
books.each do |book|
price = book.find("//price").first.content
puts price
end
このスクリプトは29.99
2 回戻ります。これは XPath コンテキストの設定と関係があるに違いないと思いますが、それを達成する方法はまだわかりません。