gpt4 book ai didi

ruby - 在 nokogiri 中使用 SAX 解析 XML 时如何搜索它

转载 作者:数据小太阳 更新时间:2023-10-29 07:25:16 24 4
gpt4 key购买 nike

我有一个简单但巨大的 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 标签之间打印文本?

最佳答案

您只需要跟踪您何时在 <title> 中这样characters知道什么时候应该注意。可能是这样的(未经测试的代码):

class PostCallbacks < XML::SAX::Document
def initialize
@in_title = false
end

def start_element(element, attributes)
if element == 'title'
puts "found title"
@in_title = true
end
end

def end_element(element)
# Doesn't really matter what element we're closing unless there is nesting,
# then you'd want "@in_title = false if element == 'title'"
@in_title = false
end

def characters(text)
puts text if @in_title
end
end

关于ruby - 在 nokogiri 中使用 SAX 解析 XML 时如何搜索它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4536218/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com