我需要使用 XPath 获取节点的子节点,因为我想“向下钻取”到一个节点。这是我正在尝试的代码:
xml_ns = 'Document:http://www.google.com/books/'
xml_document = XML::Document.file('./test_pages/test.xml')
book_xpath = '//Document:View/Document:Books'
book_title_xpath = '//Document:Title'
xml_document.find(book_xpath, xml_ns).each() { | item |
puts item
item.find(book_title_xpath, xml_ns).each() { |item2|
puts '========================'
puts 'name: ' + item2.content().strip()
}
}
这是一个 XML 片段
<Document xmlns="http://www.google.com/books/">
<View>
<Books>
<Title>pragmatic programming</Title>
</Books>
<Comics>
<Title>x-men</Title>
</Comics>
</View>
</Document>
第一个查找工作查找并返回 Books 节点。然而,即使我只在找到的节点中搜索,第二个 find('//Document:Title') 也会返回文档中的所有标题节点。
为什么会发生这种情况?我已经厌倦了修改第二个 XPath,但我厌倦了任何工作。有什么建议吗?