module MARC::LibXMLReader
Public Class Methods
extended(receiver)
click to toggle source
# File lib/marc/xml_parsers.rb, line 337 def self.extended(receiver) require "xml" receiver.init end
Public Instance Methods
build_record()
click to toggle source
each
# File lib/marc/xml_parsers.rb, line 361 def build_record r = MARC::Record.new until (@parser.local_name == "record") && (@parser.node_type == XML::Reader::TYPE_END_ELEMENT) @parser.read next if @parser.node_type == XML::Reader::TYPE_END_ELEMENT case @parser.local_name when "leader" @parser.read r.leader = @parser.value when "controlfield" tag = @parser[TAG] @parser.read r << MARC::ControlField.new(tag, @parser.value) when "datafield" data = MARC::DataField.new(@parser[TAG], @parser[IND1], @parser[IND2]) while @parser.read && !((@parser.local_name == "datafield") && (@parser.node_type == XML::Reader::TYPE_END_ELEMENT)) next if @parser.node_type == XML::Reader::TYPE_END_ELEMENT case @parser.local_name when "subfield" code = @parser[CODE] @parser.read data.append(MARC::Subfield.new(code, @parser.value)) end end r << data end # case end # until r end
each() { |build_record| ... }
click to toggle source
# File lib/marc/xml_parsers.rb, line 347 def each if block_given? while @parser.read if @parser.local_name == "record" && @parser.namespace_uri == @ns yield build_record end end # while else enum_for(:each) end end
init()
click to toggle source
# File lib/marc/xml_parsers.rb, line 342 def init @ns = "http://www.loc.gov/MARC21/slim" @parser = XML::Reader.io(@handle) end