[−][src]Crate exile
exile
is a Rust library for reading and writing XML.
The goal is to provide a useful abstraction over XML with DOM-like structs. The state of the library is 'pre-alpha' See the GitHub issues and milestones for work planned.
Example
Parsing XML looks like this.
let xml = r#" <root> <thing name="foo"/> <thing>bar</thing> </root> "#; let doc = exile::parse(xml).unwrap(); for child in doc.root().children() { println!("element name: {}", child.name); if let Some(attribute) = child.attributes.map().get("name") { println!("name attribute: {}", attribute); } }
Authoring XML looks like this.
use exile::{Document, Element, Node}; let mut root = Element::from_name("my_root"); // TODO - improve the interface root.attributes.mut_map().insert("foo".into(), "bar".into()); let mut child = Element::from_name("my_child"); child.nodes.push(Node::Text("Hello World!".into())); root.nodes.push(Node::Element(child)); let doc = Document::from_root(root); println!("{}", doc.to_string());
The program above prints:
<my_root foo="bar">
<my_child>Hello World!</my_child>
</my_root>
Crates
Development is setup as a cargo workspace with three crates.
xdoc
is the root dependency and contains structs that represent an XML documentxtest
contains test files and helper functions for loading them.exile
is the public-facing crate and includes the parser.
Work to Do
Current status is 'pre-mvp'. v0.0.0 will be able to parse basic XML documents into DOM-like structures and serialize them back.
- [x] MVP
- [ ] Conformance
- [ ] Interface
Modules
error | The |
Structs
Document | Represents an XML Document. |
Element | Represents an Element in an XML Document. |
Enums
Node | Represents a Node in an XML Document. The Document consists of a recursive nesting of these. |
Functions
parse | Currently this is the only way to parse an XML document. TODO - streaming https://github.com/webern/exile/issues/20 |