Rust:
การทำงานกับ XML
วิธีการ:
ใน Rust, คุณสามารถจัดการ XML ได้ด้วย crates เช่น 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 เป็นเทคโนโลยีรุ่นเก่า, ถูกสร้างขึ้นสำหรับเว็บในช่วงปลาย 90s การออกแบบของมันส่งเสริมให้มีการอ่านที่ง่าย (ทั้งสำหรับเครื่องและคน) และข้อมูลที่อธิบายตัวเองอย่างละเอียด
มีทางเลือกอื่นหรือไม่? แน่นอน, JSON เป็นตัวเลือกยอดนิยมในยุคสมัยใหม่สำหรับ Web API, เบากว่าและมีรายละเอียดน้อยกว่า ในขณะเดียวกัน YAML ก็ได้รับความนิยมสำหรับการกำหนดค่าด้วยโครงสร้างที่เรียบง่าย แต่ XML ก็ยังไม่ได้หายไปในเร็วๆ นี้—มีโครงสร้างพื้นฐานขนาดใหญ่ที่สร้างขึ้นบน XML
ภายใต้ฝาครอบ, การวิเคราะห์ XML ของ Rust ใช้รูปแบบ iterator, ทำให้การใช้หน่วยความจำต่ำและประสิทธิภาพสูง คุณจะพบ crates เช่น serde-xml-rs
สำหรับประสบการณ์ที่คล้ายกับ serde ซึ่งเป็นข้อดีสำหรับผู้ที่คุ้นเคยกับการจัดการ JSON
ดูเพิ่มเติม:
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ Rust และ XML:
serde-xml-rs
สำหรับความเข้ากันได้ของ Rust’s serde: https://github.com/RReverser/serde-xml-rs- เอกสารอย่างเป็นทางการของ Rust (เพราะการทบทวนไม่เคยทำให้เสียหาย): https://doc.rust-lang.org/stable/book/