【发布时间】:2013-02-24 07:37:04
【问题描述】:
我有一个无法打开的大文件:
... more here
<my_element attr1='123'>
... a lot of text and elements here
</my_element>
<my_element attr1='33'>
... a lot of text and elements here
</my_element>
... more here
我试过“How do I use Nokogiri::XML::Reader to parse large XML files?”:
#!/usr/bin/ruby
require "rubygems"
require "nokogiri"
require "debugger"
require "awesome_print"
file = ARGV[0]
reader = Nokogiri::XML::Reader(File.open(file))
reader.each do |node|
if node.name == "PATDOC"
debugger
break
end
end
但node.attributes 返回{}。
如何从元素中提取属性和内部文本?
【问题讨论】:
-
改用 XML 解析器。它会让您的生活更轻松。
-
我有一个很长的文件,我什至无法打开,我可以使用哪个解析器?我在 OS X 中
-
定义“大”和“长”。
-
压缩后约 60 MB。
-
应该使用流式“SAX”解析器处理大 XML 数据文件。 Nokogiri 支持 SAX,并且已记录在案。另见stackoverflow.com/q/10588194/128421。当这个问题被问到 60MB 有点大时,现在我们可以在大多数盒子上使用 Nokogiri 在内存中的正常 DOM 解析来做到这一点。