Pergunta

Eu gostaria de analisar parar quando encontrar 1º elemento ainda há mais mesmo elemento depois disso. Eu uso libxml, SAX no rubi.
Este código mostra cada elemento <usr>.
Mas eu quero parse parar quando encontrar 1º <usr>.
Como esse arquivo XML será enorme. Alguém sabe como parar para analisar quando encontrar primeiro elemento pelo método SAX.

código

#! 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

Graças.

Foi útil?

Solução

Eu não sei se este é também aplicável nos termos do rubi, mas para o módulo Python SAX, deve-se lançar uma exceção para sair da fase de "análise" ... é a única maneira de fazê-lo sem cortar.

Eu acho que se você não encontrar um método na documentação do Ruby, que provavelmente significa que a minha proposta é sensível; -)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top