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 end r
end
|