RazrFalcon / xmlwriter

A simple, streaming XML writer.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

xmlwriter

Build Status Crates.io Documentation Rust 1.32+

A simple, streaming, partially-validating XML writer that writes XML data to a std::io::Write implementation.

Features

  • A simple, bare-minimum API that panics when writing invalid XML.
  • Non-allocating API. All methods are accepting either fmt::Display or fmt::Arguments.
  • Nodes auto-closing.

Example

use xmlwriter::*;
use std::io;

fn main() -> io::Result<()> {
    let opt = Options {
        use_single_quote: true,
        ..Options::default()
    };

    let mut w = XmlWriter::new(Vec::<u8>::new(), opt);
    w.start_element("svg")?;
    w.write_attribute("xmlns", "http://www.w3.org/2000/svg")?;
    w.write_attribute_fmt("viewBox", format_args!("{} {} {} {}", 0, 0, 128, 128))?;
    w.start_element("text")?;
    // We can write any object that implements `fmt::Display`.
    w.write_attribute("x", &10)?;
    w.write_attribute("y", &20)?;
    w.write_text_fmt(format_args!("length is {}", 5))?;

    assert_eq!(std::str::from_utf8(w.end_document()?.as_slice())
        .expect("xmlwriter always writes valid UTF-8"),
"<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 128 128'>
    <text x='10' y='20'>
        length is 5
    </text>
</svg>
"
    );
    Ok(())
}

License

MIT

About

A simple, streaming XML writer.

License:MIT License


Languages

Language:Rust 100.0%