class Metacrunch::Mab2::Document::MabXmlParser
Public Instance Methods
attr(name, value)
click to toggle source
# File lib/metacrunch/mab2/document/mab_xml_parser.rb, line 49 def attr(name, value) if @in_subfield @subfield.code = value if name == :code elsif @in_datafield if name == :tag @datafield.tag = value elsif name == :ind1 @datafield.ind1 = value elsif name == :ind2 @datafield.ind2 = value end elsif @in_controlfield @controlfield.tag = value if name == :tag end end
end_element(name)
click to toggle source
# File lib/metacrunch/mab2/document/mab_xml_parser.rb, line 36 def end_element(name) if @in_subfield @in_subfield = false @datafield.add_subfield(@subfield) elsif @in_datafield @in_datafield = false @document.add_datafield(@datafield) elsif @in_controlfield @in_controlfield = false @document.add_controlfield(@controlfield) end end
parse(mab_xml)
click to toggle source
# File lib/metacrunch/mab2/document/jruby/mab_xml_parser.rb, line 6 def parse(mab_xml) xml = Nokogiri::XML(mab_xml.try(:strip)) xml.remove_namespaces! html_entities = HTMLEntities.new document = Document.new xml.xpath("//metadata/record").children.each do |node| if node.name == "controlfield" controlfield = Metacrunch::Mab2::Document::Controlfield.new controlfield.tag = node.attributes["tag"].value controlfield.values = node.content document.add_controlfield(controlfield) elsif node.name == "datafield" then datafield = Metacrunch::Mab2::Document::Datafield.new datafield.tag = node.attributes["tag"].value datafield.ind1 = node.attributes["ind1"].try(:value) datafield.ind2 = node.attributes["ind2"].try(:value) node.children.each do |subnode| if subnode.name == "subfield" subfield = Metacrunch::Mab2::Document::Subfield.new subfield.code = subnode.attributes["code"].value value = subnode.content subfield.value = value.include?("&") ? html_entities.decode(value) : value datafield.add_subfield(subfield) end end document.add_datafield(datafield) end end document end
start_element(name)
click to toggle source
# File lib/metacrunch/mab2/document/mab_xml_parser.rb, line 23 def start_element(name) if name == :subfield @in_subfield = true @subfield = Metacrunch::Mab2::Document::Subfield.new elsif name == :datafield @in_datafield = true @datafield = Metacrunch::Mab2::Document::Datafield.new elsif name == :controlfield @in_controlfield = true @controlfield = Metacrunch::Mab2::Document::Controlfield.new end end
text(value)
click to toggle source
# File lib/metacrunch/mab2/document/mab_xml_parser.rb, line 65 def text(value) if @in_subfield @subfield.value = value.include?("&") ? @html_entities_coder.decode(value) : value elsif @in_controlfield @controlfield.values = value end end