Sha256: 5d6be560f87b51bd53ba7c6509eb2ce3b5e12930d79862fcddd8a27c6cc82dd8
Contents?: true
Size: 1.36 KB
Versions: 1
Compression:
Stored size: 1.36 KB
Contents
require 'rubygems' require 'nokogiri' module RETS4R class Client class CompactNokogiriParser < Nokogiri::XML::SAX::Document def parse_results(io) doc = CompactDocument.new parser = Nokogiri::XML::SAX::Parser.new(doc) parser.parse(io) doc.results end class CompactDocument < Nokogiri::XML::SAX::Document attr_reader :results def initialize @results = [] end def start_element name, attrs = [] case name when 'DELIMITER' @delimiter = attrs.last.to_i.chr when 'COLUMNS' @columns_element = true @string = '' when 'DATA' @data_element = true @string = '' end end def end_element name case name when 'COLUMNS' @columns_element = false @columns = @string.split(@delimiter) when 'DATA' @data_element = false @results << @columns.zip(@string.split(@delimiter)).inject({}) do | h,(k,v) | h[k] = v unless k.empty? next h end end end def characters string if @columns_element @string << string elsif @data_element @string << string end end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
josephholsten-rets4r-1.1.16 | lib/rets4r/client/parsers/compact_nokogiri.rb |