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 הוא ותיק בשנות הטכנולוגיה, נוצר לעולם האינטרנט בשנות ה-90 המאוחרות. הוא מבוסס על קריאות (למחשבים ולאנשים כאחד) ונתונים המתארים את עצמם ברחבי.

אלטרנטיבות? בוודאי, JSON הוא הבחירה המודרנית ל-API-ים באינטרנט, קל יותר ופחות רועש. בינתיים, YAML הפך לפופולרי עבור הגדרות, עם תצורה נקייה. אבל XML לא הולך לשום מקום בזמן הקרוב – תשתיות אדירות נבנו על גביו.

מאחורי הקלעים, פרסור XML ב-Rust מבוסס על דפוסי איטרטורים, שומר על שימוש בזיכרון נמוך וביצועים חדים. תמצא crates כמו serde-xml-rs לחוויה שדומה יותר ל-serde – מתנה עבור אלו הרגילים לטפל ב-JSON.

ראה גם:

למידע נוסף על Rust ו-XML: