找到第一个元素时如何停止解析?

时间:2009-10-23 02:06:57

标签: xml sax libxml-ruby

我想在找到第一个元素时停止解析,即使之后有更多相同的元素。 我在ruby上使用libxml,SAX 此代码显示每个<usr>元素 但是我想在找到第1 <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

感谢。

1 个答案:

答案 0 :(得分:1)

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

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