ilex_xml

Crates.ioilex_xml
lib.rsilex_xml
version0.4.2
sourcesrc
created_at2024-07-26 22:53:39.530991
updated_at2024-10-01 21:30:33.759286
descriptionXML as a tree: Read and write
homepage
repositoryhttps://github.com/alexanderjkslfj/ilex
max_upload_size
id1316833
size43,850
Alex (alexanderjkslfj)

documentation

README

ilex

crates.io docs

Simple tree structure XML library. Allows reading and writing.

Focus on ease of use while maintaining good performance.

Documentation

Example

use ilex_xml::{items_to_string, parse_trimmed, Item};

let xml = r#"
<!-- The cat is cute. -->
<parent>
    <child likes="orange">Alice</child>
    <child likes="teal">Bob</child>
</parent>
"#;

let mut items = parse_trimmed(xml).unwrap();

{
    // Get comment content
    let Item::Comment(comment) = &items[0] else {
        panic!(
            "Huh, odd. Let's look at the first item's raw XML: {}",
            items[0]
        );
    };

    println!("I found a useful comment:{}", comment.get_value()?);
}

let Item::Element(parent) = &mut items[1] else {
    panic!("Pretty sure the second item is an element.")
};

{
    // Print attributes and text contents of children
    for item in &parent.children {
        let Item::Element(child) = item else {
            panic!("The children are elements, too.")
        };

        let name = child.get_text_content();
        let color = child.get_attribute("likes")?.unwrap();

        println!("{name}'s favorite color is {color}!");
    }
}

println!("Hey, their name isn't Bob! It's Peter!");

{
    // Change child

    // Get child
    let Item::Element(child) = &mut parent.children[1] else {
        panic!();
    };

    // Remove the wrong name
    child.children.pop();
    // Add the correct name
    child.children.push(Item::new_text("Peter"));

    println!(
        "Lets take another look at the raw XML, now that the name is fixed: {}",
        items_to_string(&items)
    );
}
Commit count: 81

cargo fmt