14 releases

0.5.2 Mar 19, 2023
0.5.1 Nov 5, 2022
0.5.0 Nov 28, 2021
0.4.0 Nov 27, 2021
0.1.4 Jul 7, 2021

#183 in Data structures

Download history 1684/week @ 2023-11-20 1359/week @ 2023-11-27 1559/week @ 2023-12-04 836/week @ 2023-12-11 692/week @ 2023-12-18 193/week @ 2023-12-25 836/week @ 2024-01-01 716/week @ 2024-01-08 879/week @ 2024-01-15 932/week @ 2024-01-22 852/week @ 2024-01-29 979/week @ 2024-02-05 526/week @ 2024-02-12 472/week @ 2024-02-19 793/week @ 2024-02-26 798/week @ 2024-03-04

2,617 downloads per month
Used in 19 crates (7 directly)

MIT license

17KB
285 lines

xml-builder

Documentation Latest version dependency status codecov

This crate allows you to easily create an XML file in a short time by building a highly-configurable object tree.

Main advantages

This crate offers many advantages over other XML-building crates :

  • Fast and easy XML documents creation
  • Low size, suits fine for embedeed systems
  • Does not depend on other crates
  • Highly configurable
  • No unsafe code, it integrates the #![forbid(unsafe_code)] lint directive

Main features

Using this crate can bring you many useful features :

  • Element attributes sorting
  • XML indentation, or not
  • Custom XML versions
  • Custom XML encodings

Usage

To use this crate you just need to add this to your Cargo.toml file:

[dependencies]
xml-builder = "*"

Examples

use xml_builder::{XMLBuilder, XMLElement, XMLVersion};

fn main() {
    let mut xml = XMLBuilder::new()
        .version(XMLVersion::XML1_1)
        .encoding("UTF-8".into())
        .build();

    let mut house = XMLElement::new("house");
    house.add_attribute("rooms", "2");

    for i in 1..=2 {
        let mut room = XMLElement::new("room");
        room.add_attribute("number", &i.to_string());
        room.add_text(format!("This is room number {}", i)).unwrap();

        house.add_child(room).unwrap();
    }

    xml.set_root_element(house);

    let mut writer: Vec<u8> = Vec::new();
    xml.generate(&mut writer).unwrap();
}

This following XML content will then be displayed:

<?xml encoding="UTF-8" version="1.1"?>
<house rooms="2">
        <room number="1" price="42">This is room number 1</room>
        <room number="2" price="84">This is room number 2</room>
</house>

No runtime deps