Rust:
Lavorare con XML
Come fare:
In Rust, puoi gestire XML con crate come xml-rs
. Installa aggiungendo xml-rs = "0.8"
al tuo Cargo.toml
. Ecco come analizzare un semplice XML:
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!("Inizio: {}", name);
}
Ok(XmlEvent::Characters(data)) => {
println!("Testo: {}", data);
}
Ok(XmlEvent::EndElement { name }) => {
println!("Fine: {}", name);
}
Err(e) => {
println!("Errore: {}", e);
}
_ => {}
}
}
}
Output:
Inizio: book
Inizio: title
Testo: Rust in Action
Fine: title
Inizio: author
Testo: Tim McNamara
Fine: author
Inizio: year
Testo: 2021
Fine: year
Fine: book
Questo codice legge lo stream di XML, gestendo elementi di inizio e fine più i dati di testo, registrando ogni passaggio.
Approfondimento:
L’XML è un veterano negli anni tecnologici, creato per il web alla fine degli anni ‘90. Il suo design promuove la leggibilità (sia per le macchine che per gli umani) e dati auto-descrittivi estensivi.
Alternative? Certo, JSON è il moderno punto di riferimento per le API web, più leggero e meno rumoroso. Nel frattempo, YAML ha raccolto fan per le configurazioni, con il suo layout pulito. Ma l’XML non andrà da nessuna parte a breve—vaste infrastrutture sono costruite sulla sua base.
Sotto il cofano, l’analisi dell’XML in Rust si basa su schemi iteratore, mantenendo l’uso della memoria basso e le prestazioni elevate. Troverai crate come serde-xml-rs
per un’esperienza più in linea con serde—una manna per chi è abituato alla gestione JSON.
Vedi Anche:
Per saperne di più su Rust e XML:
serde-xml-rs
per la compatibilità con serde di Rust: https://github.com/RReverser/serde-xml-rs- Documentazione ufficiale di Rust (perché non fa mai male fare un ripasso): https://doc.rust-lang.org/stable/book/