Rust:
Praca z XML

Jak to zrobić:

W Rust, można obsłużyć XML za pomocą crate’ów takich jak xml-rs. Zainstaluj, dodając xml-rs = "0.8" do twojego Cargo.toml. Oto jak przeanalizować prosty 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!("Początek: {}", name);
            }
            Ok(XmlEvent::Characters(data)) => {
                println!("Tekst: {}", data);
            }
            Ok(XmlEvent::EndElement { name }) => {
                println!("Koniec: {}", name);
            }
            Err(e) => {
                println!("Błąd: {}", e);
            }
            _ => {}
        }
    }
}

Wyjście:

Początek: book
Początek: title
Tekst: Rust in Action
Koniec: title
Początek: author
Tekst: Tim McNamara
Koniec: author
Początek: year
Tekst: 2021
Koniec: year
Koniec: book

Ten kod odczytuje strumień XML, obsługując elementy początkowe i końcowe oraz dane tekstowe, rejestrując każdy krok.

Szczegółowa analiza:

XML to senior w świecie technologii, stworzony dla sieci pod koniec lat 90. Jego design promuje czytelność (zarówno dla maszyn, jak i ludzi) i obszerne dane samoopisujące.

Alternatywy? Jasne, JSON jest współczesnym wyborem dla API sieciowych, lżejszym i mniej hałaśliwym. Tymczasem YAML zdobył fanów dla konfiguracji, dzięki swojemu czystemu układowi. Ale XML nie zniknie tak szybko – ogromne infrastruktury są zbudowane na jego podstawie.

Pod kapotą, parsowanie XML w Rust opiera się na wzorcach iteratorów, utrzymując niskie zużycie pamięci i wysoką wydajność. Znajdziesz crate’y takie jak serde-xml-rs dla bardziej serde-podobnego doświadczenia – bonus dla tych, którzy są przyzwyczajeni do obsługi JSON-a.

Zobacz także:

Więcej na temat Rust i XML: