xml-canonicalization

Crates.ioxml-canonicalization
lib.rsxml-canonicalization
version0.1.0
created_at2025-02-12 22:50:56.922925+00
updated_at2025-02-12 22:50:56.922925+00
descriptionXML Canonicalisation Library in pure Rust
homepage
repositoryhttps://github.com/lilopkins/xml-canonicalization-rs
max_upload_size
id1553575
size52,660
Lily Hopkins (lilopkins)

documentation

README

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);
Commit count: 5

cargo fmt