xml-doc

xml-doc is a rust library to read, modify, and write XML documents. Documentation

It's aim is to be able to read any xml files, and modify only the parts you want to.

Features:

Due to its architecture, you can't exchange nodes or elements between documents. If your project modifies multiple xml documents at the same time, this library may not be a good fit.

Example

```rust use xml_doc::{Document, Element};

let XML = r#" xml-doc MIT or Apache 2.0 "#;

let doc = Document::parsestr(XML).unwrap(); let package = doc.rootelement().unwrap(); let metadata = package.find(&doc, "metadata").unwrap(); let title = metadata.find(&doc, "title").unwrap(); title.set_attribute("xml:lang", "en");

// Add an element to metadata: Yoonchae Lee let author = Element::build(&mut doc, "dc:creator") .textcontent("Yoonchae Lee") .attribute("id", "author") .pushto(metadata);

let newxml = doc.writestr(); ```

Performance

To run benchmark: cd benches ; cargo bench.

Parsing

tiny(4.8KB) medium(1.5MB) large(25MB) medium(UTF-16) xml_doc v0.2.0: 73.79us 29.74ms 341.05ms 29.16ms minidom v0.12.0: 85.19us 40.09ms 565.04ms roxmltree v0.14.1: 49.34us 16.33ms 330.90ms xmltree v0.10.3: 4065.8 us 1204.7 ms 21198. ms

Only roxmltree which doesn't support writing, is considerably faster than xml_doc. You can see the result of the benchmarks here.