【发布时间】:2014-05-20 00:25:59
【问题描述】:
我试图将下面 XML 中低级元素的所有唯一 Xpath 存储在一个数组中,但就像我在数组 a 中所做的那样,正在存储所有 XML,而不仅仅是 Xpath 本身。 XML 具有不同级别的 Xpath。我的意思是,一些子元素只有 2 个祖先,而另一些则不止一个。
这是我的代码。
require 'nokogiri'
doc = Nokogiri::XML(<<EOT)
<?xml version="1.0" encoding="UTF-8"?>
<items>
<item>
<name>Cake</name>
<ppu>0.55</ppu>
<batters>
<batter>Regular</batter>
<batter>Chocolate</batter>
<batter>Blueberry</batter>
<batter>Devil's Food</batter>
</batters>
<topping>None</topping>
<topping>Glazed</topping>
<topping>Sugar</topping>
<topping>Powdered Sugar</topping>
<topping>Chocolate with Sprinkles</topping>
<topping>Chocolate</topping>
<topping>Maple</topping>
</item>
<item>
<name>Raised</name>
<ppu>0.55</ppu>
<batters>
<batter>Regular</batter>
</batters>
<topping>None</topping>
<topping>Glazed</topping>
<topping>Sugar</topping>
<topping>Chocolate</topping>
<topping>Maple</topping>
</item>
</items>
EOT
a = []
a = doc.xpath("//*")
puts a
我只想将唯一的 xpath 存储在数组“a”中,如下所示:
/items/item/name
/items/item/ppu
/items/item/batters/batter
/items/item/topping
也许有人可以帮助我如何做到这一点。
感谢您的帮助。
【问题讨论】:
-
您到底想存储什么? XPath 本身还是元素的内容?