Expand description
§Simple XML Serialization
This is a Rust crate for serialization of data to XML. XMLElement
s can either be built
manually, or the simple_xml_serialize_macro
crate can be used to generate From
implementations for structs.
§Example Usage
use simple_xml_serialize::XMLElement;
fn main() {
// build up your XMLElement with individual calls ...
let mut ele = XMLElement::new("person");
ele.add_attr("age", 28); // accept any value that implements `ToString`.
ele.set_text("John Doe");
// ... or with the builder pattern
let sub_ele = XMLElement::new("person")
.attr("age", 4)
.text("Jane Doe");
ele.add_element(sub_ele); // `add_element` accepts values that implement `Into<XMLElement>`
let expected = r#"<person age="28"><person age="4">Jane Doe</person>John Doe</person>"#;
assert_eq!(expected, ele.to_string());
println!("{}", ele.to_string_pretty("\n", "\t")); // specify your preferred newline and indentation for pretty printing
ele.set_text("John Doe > John Deere"); // illegal characters in text will be substituted e.g. > becomes >
let expected = r#"<person age="28"><person age="4">Jane Doe</person>John Doe > John Deere</person>"#;
assert_eq!(expected, ele.to_string());
ele.set_text("<![CDATA[John Doe > John Deere]]>"); // illegal characters in CDATA tags are respected
let expected = r#"<person age="28"><person age="4">Jane Doe</person><![CDATA[John Doe > John Deere]]></person>"#;
assert_eq!(expected, ele.to_string());
}
Structs§
- XMLAttr
- A key/value pair that is serialized inside the opening tag of an XMLElement.
- XMLElement
- The basic type this crate provides. Functions are provided for setting/adding to the fields in this struct. Any manipulation past that is left to the user by accessing the fields directly.