#xml #pure #reference #attributes #canonicalisation

xml-canonicalization

XML Canonicalisation Library in pure Rust

1 unstable release

new 0.1.0 Feb 12, 2025

#77 in #attributes

MIT license

29KB
672 lines

xml-canonicalization

A pure Rust XML Canonicalisation implementation.

Unsupported Features

Certain XML features (that are rarely used in practice) are unsupported by this crate:

  • Entity references
  • Default attributes via DTD
  • Document Subset Expressions

Otherwise, all XML canonicalisation features are supported, and are validated against examples from the W3C specification.

Usage

use std::io::Cursor;
use xml_canonicalization::Canonicalizer;

let input = r#"<?xml version="1.0" encoding="ISO-8859-1"?><doc>&#169;</doc>"#;
let canonical = r#"<doc>©</doc>"#;

let mut result = vec![];
Canonicalizer::read_from_str(input)
    .write_to_writer(Cursor::new(&mut result))
    .canonicalize(true)
    .expect("canonicalization shouldn't fail");
assert_eq!(String::from_utf8_lossy(&result), canonical);

Dependencies

~7.5MB
~133K SLoC