Rust:
Travailler avec XML
Comment faire :
En Rust, vous pouvez gérer XML avec des crates telles que xml-rs
. Installez en ajoutant xml-rs = "0.8"
à votre Cargo.toml
. Voici comment parser un XML simple :
extern crate xml;
use xml::reader::{EventReader, XmlEvent};
fn main() {
let xml_data = r#"<book category="fiction">
<title>Rust in Action</title>
<author>Tim McNamara</author>
<year>2021</year>
</book>"#;
let parser = EventReader::from_str(xml_data);
for e in parser {
match e {
Ok(XmlEvent::StartElement { name, .. }) => {
println!("Début : {}", name);
}
Ok(XmlEvent::Characters(data)) => {
println!("Texte : {}", data);
}
Ok(XmlEvent::EndElement { name }) => {
println!("Fin : {}", name);
}
Err(e) => {
println!("Erreur : {}", e);
}
_ => {}
}
}
}
Sortie :
Début : book
Début : title
Texte : Rust in Action
Fin : title
Début : author
Texte : Tim McNamara
Fin : author
Début : year
Texte : 2021
Fin : year
Fin : book
Ce code lit en flux le XML, en gérant les éléments de début et de fin plus les données textuelles, et en enregistrant chaque étape.
Plongée profonde :
XML est un ancien en années technologiques, conçu pour le web à la fin des années 90. Sa conception favorise la lisibilité (tant pour les machines que pour les humains) et des données auto-descriptives étendues.
Des alternatives ? Bien sûr, JSON est le choix moderne pour les API web, plus léger et moins bruyant. Pendant ce temps, YAML a gagné des adeptes pour les configurations, avec sa présentation épurée. Mais XML ne disparaîtra pas de sitôt - d’immenses infrastructures sont construites sur son dos.
Sous le capot, l’analyse XML de Rust s’appuie sur des motifs d’itérateur, gardant l’utilisation de la mémoire faible et les performances affûtées. Vous trouverez des crates comme serde-xml-rs
pour une expérience plus proche de serde - une aubaine pour ceux habitués à la manipulation de JSON.
Voir aussi :
Pour plus d’informations sur Rust et XML :
serde-xml-rs
pour la compatibilité serde de Rust : https://github.com/RReverser/serde-xml-rs- Documentation officielle de Rust (car ça ne fait jamais de mal de se remettre à jour) : https://doc.rust-lang.org/stable/book/