【发布时间】:2010-12-27 01:45:06
【问题描述】:
我有一个简单但巨大的 xml 文件,如下所示。我想使用 SAX 解析它,并且只打印出 title 标签之间的文本。
<root>
<site>some site</site>
<title>good title</title>
</root>
我有以下代码:
require 'rubygems'
require 'nokogiri'
include Nokogiri
class PostCallbacks < XML::SAX::Document
def start_element(element, attributes)
if element == 'title'
puts "found title"
end
end
def characters(text)
puts text
end
end
parser = XML::SAX::Parser.new(PostCallbacks.new)
parser.parse_file("myfile.xml")
问题是它在所有标签之间打印文本。如何在title 标签之间打印文本?
【问题讨论】:
-
“巨大”有多大?我曾经使用 SAX 进行解析,因为我的机器上的文件比可用 RAM 大,但现在我有大量可用的 RAM,所以我通常使用 DOM 来解析。
-
感谢您提出这个问题