【发布时间】:2013-06-30 09:38:00
【问题描述】:
我有几个大的 XML 文件,像这样:
<Listings>
<Listing>
<Location>
<StreetAddress>123 Main St</StreetAddress>
<UnitNumber>2F</UnitNumber>
<City>Anytown</City>
<State>NY</State>
<Zip>10000</Zip>
</Location>
</Listing>
<!-- a bajillion more Listing nodes -->
</Listings>
不同风味之间的主要区别在于,一种具有<Listing> 节点,另一种称为<property/>。子元素的嵌套也各不相同。
什么是解析一系列大 XML 文件的好方法,每个文件都包含相似的条目但具有不同的标签名称?我认为维护标签名称的映射表是有道理的,但是如何使用 Ruby 有效地遍历这些名称?
我想获取<Listing> 元素,解析出它们的子元素,如StreetAddress 等,然后将它们写在其他地方。每个文件都包含数千个列表,有些是 100+MB。
【问题讨论】:
-
给一个样品,然后问你想要什么。我们无法想象。
-
添加了一个示例清单 XML,抱歉
-
一般的经验法则是,如果您有 bajillion 或更多节点,您应该使用 SAX 或 Reader 接口,以免占用所有内存。 :)
-
检查这个 sax 解析选项,amolnpujari.wordpress.com/2012/03/31/reading_huge_xml-rb 新的 OX ruby 解析器似乎比 Nokogiri 快 5 倍,gist.github.com/amolpujari/5966431