class MetsConverter::MetsParser

Attributes

document[R]

Public Class Methods

new(file) click to toggle source
# File lib/mets_converter/mets_parser.rb, line 7
def initialize(file)
  @file = file
  @document = parse_xml
end

Public Instance Methods

capture_date() click to toggle source
# File lib/mets_converter/mets_parser.rb, line 16
def capture_date
  document.xpath('//xmlns:metsHdr')[0].attr('CREATEDATE') + '-06:00'
end
input_file_location() click to toggle source
# File lib/mets_converter/mets_parser.rb, line 12
def input_file_location
  File.dirname(@file)
end
pages() click to toggle source
# File lib/mets_converter/mets_parser.rb, line 20
def pages
  document.search('structMap[@TYPE="logical"]//div[@TYPE="page"]')
end

Private Instance Methods

parse_xml() click to toggle source
# File lib/mets_converter/mets_parser.rb, line 26
def parse_xml
  input_file = File.open(@file)
  begin
    xsd = Nokogiri::XML::Schema(File.open('xsd/mets.xsd'))
    doc = Nokogiri::XML(input_file, &:strict)
    xsd.valid?(doc) ? doc : raise('Invalid METS file')
  rescue Nokogiri::XML::SyntaxError => e
    MetsConverter.logger.error "XML error: #{e}"
  end
end