Парсинг с помощью libxml

Наконец добрался и до lib-xml. Особых отличий в использовании я не увидел. Производительность на уровне nokogiri.

Вот их документация.

И небольшой пример:


xml = File.read(self.filename)
remove_unused_nodes(xml)

doc = XML::Document.string(xml)
# doc = XML::Document.file(self.filename) # Можно и так создавать документ

doc.find('//VisioDocument/Masters/Master').each do |s|
master = {}
master.store(:base_id, s['BaseID'])
master.store(:master_id, s['ID'])

self.masters << master
end


В целом документ размером в 5-10мб парсит меньше чем пол секунды, для моей задачи более чем приемлемо. На этом я думаю мои искания парсеров закончены :)