Rust:
Работа с XML
Как:
В Rust вы можете работать с XML с помощью таких крейтов, как xml-rs
. Установите, добавив xml-rs = "0.8"
в ваш Cargo.toml
. Вот как разобрать простой 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!("Начало: {}", name);
}
Ok(XmlEvent::Characters(data)) => {
println!("Текст: {}", data);
}
Ok(XmlEvent::EndElement { name }) => {
println!("Конец: {}", name);
}
Err(e) => {
println!("Ошибка: {}", e);
}
_ => {}
}
}
}
Вывод:
Начало: book
Начало: title
Текст: Rust in Action
Конец: title
Начало: author
Текст: Tim McNamara
Конец: author
Начало: year
Текст: 2021
Конец: year
Конец: book
Этот код считывает XML потоковым способом, обрабатывая начальные и конечные элементы, а также текстовые данные, регистрируя каждый шаг.
Глубокое Погружение:
XML - это старожил в технологических годах, созданный для веба в конце 90-х. Его дизайн способствует читабельности (как для машин, так и для людей) и широкой самоописываемости данных.
Альтернативы? Конечно, JSON - это современный стандарт для веб-API, более легкий и менее загруженный. Тем временем YAML завоевал поклонников для конфигураций с его чистым оформлением. Но XML не собирается никуда уходить в ближайшее время - огромные инфраструктуры построены на его основе.
Под капотом, разбор XML в Rust опирается на шаблоны итераторов, сохраняя низкое использование памяти и высокую производительность. Вы найдете крейты вроде serde-xml-rs
для более serde-подобного опыта - благо для тех, кто привык к обработке JSON.
Смотрите Также:
Для дополнительной информации о Rust и XML:
serde-xml-rs
для совместимости с Rust serde: https://github.com/RReverser/serde-xml-rs- Официальная документация Rust (ведь повторение - мать учения): https://doc.rust-lang.org/stable/book/