Ruby:
Робота з XML

Як це зробити:

Давайте використаємо REXML, що входить до складу Ruby, для парсингу фрагмента XML:

require 'rexml/document'
include REXML

xml_data = <<-XML
<fruits>
  <fruit name="apple" color="green"/>
  <fruit name="banana" color="yellow"/>
</fruits>
XML

document = Document.new(xml_data)
document.elements.each('fruits/fruit') do |element|
  puts "Name: #{element.attributes['name']}, Color: #{element.attributes['color']}"
end

Вивід:

Name: apple, Color: green
Name: banana, Color: yellow

Генерація XML також пряма:

doc = Document.new
doc.add_element 'fruits'
apple = doc.root.add_element 'fruit', {'name' => 'apple', 'color' => 'green'}
banana = doc.root.add_element 'fruit', {'name' => 'banana', 'color' => 'yellow'}
puts doc

XML вивід:

<fruits>
  <fruit name="apple" color="green"/>
  <fruit name="banana" color="yellow"/>
</fruits>

Поглиблене вивчення:

Коріння XML сягає 1990-х років як спрощений підмножина SGML для веб-документів. Вона многослівна, але високо структурована, і саме тому вона залишилася. XML не єдиний варіант – JSON та YAML стали популярними завдяки своїй простоті – але XML сильно утримується в багатьох корпоративних і спадкових системах.

Ruby пропонує кілька способів роботи з XML. REXML – це бібліотека на чистому Ruby, яка легка для початку роботи. Nokogiri – це гем, що використовує більш швидкі C-бібліотеки, пропонуючи швидкість та додаткові можливості. Що вибрати? Почніть з REXML для менших завдань, і переходьте до Nokogiri, якщо вам потрібна більша потужність.

Під капотом, парсинг XML означає перетворення рядків на моделі DOM або SAX. DOM створює дерево в пам’яті, тоді як SAX потоково обробляє документ і викликає події, коли парсить. REXML пропонує обидві моделі, але, як правило, працює повільніше, ніж розширення на C, такі як ті, що використовує Nokogiri.

Див. також: