0

我想在找到第一个元素时停止解析,即使在那之后还有更多相同的元素。我在 ruby​​ 上使用 libxml、SAX。
此代码显示每个<usr>元素。
但是我想在 find 1st 时停止解析<usr>
因为这个 XML 文件会很大。有谁知道通过 SAX 方法找到第一个元素时如何停止解析。

代码

#! ruby -Ku

require 'rubygems'
require 'libxml'
include LibXML

class PostCallbacks
  include XML::SaxParser::Callbacks

  def on_start_element(element, attributes)
    if /usr/ =~ element
      p element
    end
  end
  
end

parser = XML::SaxParser.file('test.xml')
parser.callbacks = PostCallbacks.new
parser.parse

谢谢。

4

1 回答 1

1

我不知道这是否也适用于 Ruby,但对于 Python SAX 模块,必须抛出异常才能退出“解析”阶段......这是在没有黑客攻击的情况下做到这一点的唯一方法。

我想如果你在 Ruby 文档中没有找到方法,那可能意味着我的建议是明智的 ;-)

于 2009-10-23T02:09:55.143 回答