小编Sab*_*ina的帖子

在单个节点上使用XPath会返回所有节点中的元素

我正在解析一个看起来像这样的XML文档:

<MyBook>
   <title>Favorite Poems</title>
   <issn>123-456</issn>
   <pages>45</pages>
</MyBook>
<MyBook>
   <title>Chocolate Desserts</title>
   <issn>654-098</issn>
   <pages>100</pages>
</MyBook>
<MyBook>
   <title>Jabberwocky</title>
   <issn>454-545</issn>
   <pages>19</pages>
</MyBook>
Run Code Online (Sandbox Code Playgroud)

我使用xpath拉出MyBook节点并迭代它们,如下所示:

xmldoc.xpath("//MyBook").each do |node|
   mytitle=node.xpath("//title").text
   puts mytitle
end
Run Code Online (Sandbox Code Playgroud)

输出看起来像这样:

Favorite PoemsChocolateDessertsJabberwocky
Favorite PoemsChocolateDessertsJabberwocky
Favorite PoemsChocolateDessertsJabberwocky
Run Code Online (Sandbox Code Playgroud)

好像节点真的是整个xmldoc.但是,如果我在迭代器中打印出节点,那么每次它都是我期望的,只有一个MyBook节点.我需要能够连续地从每个节点中拉出子节点,而不是从整个文档中拉出所有相同类型的子节点.我究竟做错了什么?

ruby xml parsing nokogiri

43
推荐指数
1
解决办法
1万
查看次数

标签 统计

nokogiri ×1

parsing ×1

ruby ×1

xml ×1