A simple, streaming, partially-validating XML writer that writes XML data to a std::io::Write implementation.
fmt::Display
or fmt::Arguments
.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(())
}
MIT