quick-xml
High performance xml pull reader/writer.
Syntax is inspired by xml-rs.
Usage
[]
= "0.1.9"
extern crate quick_xml;
Example
Reader
use ;
let xml = r#"<tag1 att1 = "test">
<tag2><!--Test comment-->Test</tag2>
<tag2>
Test 2
</tag2>
</tag1>"#;
let reader = from.trim_text;
// if you want to use namespaces, you just need to convert the `XmlReader`
// to an `XmlnsReader`:
// let reader_ns = reader.namespaced();
let mut count = 0;
let mut txt = Vec new;
for r in reader
Writer
use ;
use *;
use Cursor;
use iter;
let xml = r#"<this_tag k1="v1" k2="v2"><child>text</child></this_tag>"#;
let reader = from.trim_text;
let mut writer = new;
for r in reader
let result = writer.into_inner.into_inner;
let expected = r#"<my_elem k1="v1" k2="v2" my-key="some value"><child>text</child></my_elem>"#;
assert_eq!;
Performance
You can benchmark with other libraries using features:
cargo bench --features bench-xml-rs
cargo bench --features bench-rusty-xml
Results:
test bench_quick_xml ... bench: 610,970 ns/iter (+/- 40,766)
test bench_quick_xml_escaped ... bench: 721,361 ns/iter (+/- 21,095)
test bench_quick_xml_namespaced ... bench: 820,220 ns/iter (+/- 11,309)
test bench_xml_rs ... bench: 14,012,890 ns/iter (+/- 12,378,389)
test bench_rusty_xml ... bench: 5,543,993 ns/iter (+/- 326,792)
Todo
- namespaces
- non-utf8
- most methods return
&u[u8]
- escaped characters are properly managed
- what else?
- most methods return
- parse xml declaration
- benchmarks
- escape characters
- more checks
- ... ?
Known issues:
- attribute values with
>
character will likely result in parsing error
Contribute
Any PR is welcomed!
License
MIT