上下文:我正在使用 libxml-ruby gem 解析一个 XML 文件。我需要使用 XPathfind
方法在 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
两次。我认为这一定与设置 XPath 上下文有关,但我还没有想出如何完成它。