Sha256: d3a483d7493a0ba6576d1c4baba7449300687262c000fb012832e8a4e2a9fd1f
Contents?: true
Size: 944 Bytes
Versions: 5
Compression:
Stored size: 944 Bytes
Contents
require "nokogiri" module Nori module Parser # = Nori::Parser::Nokogiri # # Nokogiri SAX parser. module Nokogiri class Document < ::Nokogiri::XML::SAX::Document def stack @stack ||= [] end def start_element(name, attrs = []) stack.push Nori::XMLUtilityNode.new(name, Hash[*attrs.flatten]) end def end_element(name) if stack.size > 1 last = stack.pop stack.last.add_node last end end def characters(string) stack.last.add_node(string) unless string.strip.length == 0 || stack.empty? end alias cdata_block characters end def self.parse(xml) document = Document.new parser = ::Nokogiri::XML::SAX::Parser.new document parser.parse xml document.stack.length > 0 ? document.stack.pop.to_hash : {} end end end end
Version data entries
5 entries across 5 versions & 2 rubygems