Rust:
Trabajando con XML

Cómo hacerlo:

En Rust, puedes manejar XML con crates como xml-rs. Instala agregando xml-rs = "0.8" a tu Cargo.toml. Aquí te mostramos cómo analizar 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!("Inicio: {}", name);
            }
            Ok(XmlEvent::Characters(data)) => {
                println!("Texto: {}", data);
            }
            Ok(XmlEvent::EndElement { name }) => {
                println!("Fin: {}", name);
            }
            Err(e) => {
                println!("Error: {}", e);
            }
            _ => {}
        }
    }
}

Salida:

Inicio: book
Inicio: title
Texto: Rust in Action
Fin: title
Inicio: author
Texto: Tim McNamara
Fin: author
Inicio: year
Texto: 2021
Fin: year
Fin: book

Este código lee en flujo XML, manejando elementos de inicio y fin además de datos de texto, registrando cada paso.

Inmersión profunda:

XML es un veterano en años tecnológicos, creado para la web a finales de los 90. Su diseño promueve la legibilidad (tanto para máquinas como para humanos) y datos auto-descriptivos extensos.

¿Alternativas? Claro, JSON es el moderno preferido para las APIs web, más ligero y menos ruidoso. Mientras tanto, YAML ha ganado fans para configuraciones, con su diseño limpio. Pero XML no va a desaparecer pronto: vastas infraestructuras están construidas sobre él.

Bajo el capó, el análisis de XML de Rust se apoya en patrones de iterador, manteniendo el uso de memoria bajo y el rendimiento agudo. Encontrarás crates como serde-xml-rs para una experiencia más al estilo de serde, una bendición para aquellos acostumbrados a manejar JSON.

Ver también:

Para más sobre Rust y XML: