Crate xml_builder[][src]

Expand description


Documentation Latest version dependency status codecov

This crate allows you to easily create an XML file in a short time by building a highly-configurable object tree.

Main advantages

This crate offers many advantages over other XML-building crates :

  • Fast and easy XML documents creation
  • Low size, suits fine for embedeed systems
  • Does not depend on other crates
  • Highly configurable
  • No unsafe code, it integrates the #![forbid(unsafe_code)] lint directive

Main features

Using this crate can bring you many useful features :

  • Element attributes sorting
  • XML indentation, or not
  • Custom XML versions
  • Custom XML encodings


To use this crate you just need to add this to your Cargo.toml file:

xml-builder = "*"


use xml_builder::{XMLBuilder, XMLElement, XMLVersion};

fn main() {
    let mut xml = XMLBuilder::new()

    let mut house = XMLElement::new("house");
    house.add_attribute("rooms", "2");

    for i in 1..=2 {
        let mut room = XMLElement::new("room");
        room.add_attribute("number", &i.to_string());
        room.add_text(format!("This is room number {}", i)).unwrap();



    let mut writer: Vec<u8> = Vec::new();
    xml.generate(&mut writer).unwrap();

This following XML content will then be displayed:

<?xml encoding="UTF-8" version="1.1"?>
<house rooms="2">
        <room number="1" price="42">This is room number 1</room>
        <room number="2" price="84">This is room number 2</room>


Structure representing a XML document. It must be used to create a XML document.

Builder structure used to generate a custom XML structure.

Structure representing an XML element field.


Error type thrown by this crate

Enum representing all currently available XML versions.

Type Definitions

Custom Result type thrown by this crate.