Ruby:
Travailler avec XML
Comment faire :
Utilisons REXML, inclus avec Ruby, pour analyser un extrait 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 "Nom : #{element.attributes['name']}, Couleur : #{element.attributes['color']}"
end
Sortie :
Nom : apple, Couleur : green
Nom : banana, Couleur : yellow
Générer du XML est également simple :
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
Sortie XML :
<fruits>
<fruit name="apple" color="green"/>
<fruit name="banana" color="yellow"/>
</fruits>
Plongée profonde :
Les racines de l’XML remontent aux années 1990 en tant que sous-ensemble simplifié du SGML pour les documents web. Il est verbeux mais très structuré, et c’est pourquoi il a perduré. Ce n’est pas le seul en jeu - JSON et YAML sont devenus populaires pour leur simplicité - mais XML reste fort dans de nombreux systèmes d’entreprise et hérités.
Ruby propose quelques façons de s’attaquer à XML. REXML est une bibliothèque entièrement en Ruby qui est facile à aborder. Nokogiri est une gem qui enveloppe des bibliothèques C plus rapides, offrant vitesse et fonctionnalités supplémentaires. Entre les deux ? Commencez avec REXML pour des tâches plus petites et passez à Nokogiri si vous avez besoin de plus de puissance.
Sous le capot, analyser XML consiste à traduire des chaînes en modèles DOM ou SAX. DOM crée un arbre en mémoire, tandis que SAX diffuse le document et déclenche des événements au fur et à mesure de son analyse. REXML propose les deux modèles, mais a tendance à être plus lent que les extensions C utilisées par Nokogiri.
Voir aussi :
- Documentation Ruby REXML : https://www.rubydoc.info/stdlib/rexml
- Gem Nokogiri : https://nokogiri.org/
- Spécification XML : https://www.w3.org/XML/
- Une introduction à SAX : https://www.saxproject.org/
- Comparaison entre YAML, JSON et XML : https://www.upwork.com/resources/json-vs-xml-vs-yaml