Module: MARC::REXMLReader
- Defined in:
- lib/marc/xml_parsers.rb
Overview
The REXMLReader is the ‘default’ parser, since we can at least be assured that REXML is probably there. It uses REXML’s PullParser to handle larger document sizes without consuming insane amounts of memory, but it’s still REXML (read: slow), so it’s a good idea to use an alternative parser if available. If you don’t know the best parser available, you can use the MagicReader or set:
MARC::XMLReader.parser=MARC::XMLReader::USE_BEST_AVAILABLE
or
MARC::XMLReader.parser=“magic”
or
reader = MARC::XMLReader.new(fh, :parser=>“magic”) (or the constant)
which will cascade down to REXML if nothing better is found.
Class Method Summary collapse
Instance Method Summary collapse
-
#each ⇒ Object
Loop through the MARC records in the XML document.
-
#init ⇒ Object
Sets our parser.
Class Method Details
.extended(receiver) ⇒ Object
148 149 150 151 152 |
# File 'lib/marc/xml_parsers.rb', line 148 def self.extended(receiver) require 'rexml/document' require 'rexml/parsers/pullparser' receiver.init end |
Instance Method Details
#each ⇒ Object
Loop through the MARC records in the XML document
160 161 162 163 164 165 166 167 168 |
# File 'lib/marc/xml_parsers.rb', line 160 def each while @parser.has_next? event = @parser.pull # if it's the start of a record element if event.start_element? and strip_ns(event[0]) == 'record' yield build_record end end end |
#init ⇒ Object
Sets our parser
155 156 157 |
# File 'lib/marc/xml_parsers.rb', line 155 def init @parser = REXML::Parsers::PullParser.new(@handle) end |