1 unstable release
new 0.0.0 | Apr 9, 2025 |
---|
#7 in #quick-xml
82 downloads per month
175KB
4K
SLoC
XMLity Quick XML
This crate contains a reference implementation of the xmlity
crate using the quick-xml
crate. It is the intention to keep this crate up to date with the latest version of quick-xml
and xmlity
.
XMLity

XMLity is a (de)serialization library for XML, inspired by Serde and improves upon XML (de)serialization libraries such as yaserde and quick-xml by providing a more flexible API that is more powerful, utilising primairly a trial and error approach to parsing XML. This can inherently be a bit slower than other libraries, but it allows for more complex XML structures to be parsed.
Get started
To get started, we recommend you check out the XMLity book and the documentation.
Example
- Add XMLity and XMLity-compatible (de)serializer library. In this example we use
xmlity_quick_xml
.
[dependencies]
xmlity = { version = "0.0.0", features = ["derive"] }
xmlity_quick_xml = "0.0.0"
- Write defintions and use:
extern crate xmlity;
extern crate xmlity_derive;
extern crate xmlity_quick_xml;
use xmlity::{Serialize, Deserialize};;
use xmlity_derive::{Serialize, Deserialize};
#[derive(Serialize, Deserialize)]
#[xelement(name = "name")]
struct Name(String);
#[derive(Serialize, Deserialize)]
#[xelement(name = "age")]
struct Age(u8);
#[derive(Serialize, Deserialize)]
#[xelement(name = "person")]
struct Person {
name: Name,
age: Age,
}
let person = Person {
name: Name("John".to_string()),
age: Age(42),
};
let xml = xmlity_quick_xml::to_string(&person).expect("Failed to serialize");
assert_eq!(xml, r#"<person><name>John</name><age>42</age></person>"#);
let person: Person = xmlity_quick_xml::from_str(&xml).expect("Failed to deserialize");
assert_eq!(person.name.0, "John");
assert_eq!(person.age.0, 42);
License
Licensed under either of Apache License, Version 2.0 or MIT license at your option.Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in Serde by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
Dependencies
~1.4–2MB
~36K SLoC