Sha256: f512176886e47b80f065eb67b68f9b48b01971e15667ad043755650158336053

Contents?: true

Size: 1.1 KB

Versions: 10

Compression:

Stored size: 1.1 KB

Contents

require "xmlsimple"

module Solrizer::XML::Extractor

  #
  # This method extracts solr fields from simple xml
  # If you want to do anything more nuanced with the xml, use OM instead.
  #
  # @param [xml] text xml content to index
  # @param [Hash] solr_doc
  def xml_to_solr( text, solr_doc=Hash.new, mapper = Solrizer.default_field_mapper )
    doc = XmlSimple.xml_in( text )
    
    doc.each_pair do |name, value|
      if value.kind_of?(Array) 
        if value.first.kind_of?(Hash)
          # This deals with the way xml-simple handles nodes with attributes
          solr_doc.merge!({mapper.solr_name(name, :stored_searchable, :type=>:text).to_sym => "#{value.first["content"]}"})
        elsif value.length > 1
          solr_doc.merge!({mapper.solr_name(name, :stored_searchable, :type=>:text).to_sym => value})
        else
          solr_doc.merge!({mapper.solr_name(name, :stored_searchable, :type=>:text).to_sym => "#{value.first}"})
        end
      else
        solr_doc.merge!({mapper.solr_name(name, :stored_searchable, :type=>:text).to_sym => "#{value}"})
      end
    end

    return solr_doc
  end
  
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
solrizer-3.4.1 lib/solrizer/xml/extractor.rb
solrizer-3.4.0 lib/solrizer/xml/extractor.rb
solrizer-3.3.0 lib/solrizer/xml/extractor.rb
solrizer-3.2.0 lib/solrizer/xml/extractor.rb
solrizer-3.1.1 lib/solrizer/xml/extractor.rb
solrizer-3.1.0 lib/solrizer/xml/extractor.rb
solrizer-3.0.0 lib/solrizer/xml/extractor.rb
solrizer-3.0.0.rc2 lib/solrizer/xml/extractor.rb
solrizer-3.0.0.rc1 lib/solrizer/xml/extractor.rb
solrizer-3.0.0.pre8 lib/solrizer/xml/extractor.rb