Method: MARC::LibXMLReader#build_record
- Defined in:
- lib/marc/xml_parsers.rb
#build_record ⇒ Object
each
361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 |
# 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 |