w3c-xmlserializer
Advanced tools
A per-spec XML serializer implementation
Weekly downloads
Changelog
3.0.0
The minimum required Node.js version is now v12.
When the requireWellFormed
option is passed, XML name validation is now done correctly. Previously it would always pass validation even for invalid names, due to incorrect usage of the xml-name-validator
package.
Readme
An XML serializer that follows the W3C specification.
This package can be used in Node.js, as long as you feed it a DOM node, e.g. one produced by jsdom.
Assume you have a DOM tree rooted at a node node
. In Node.js, you could create this using jsdom as follows:
const { JSDOM } = require("jsdom");
const { document } = new JSDOM().window;
const node = document.createElement("akomaNtoso");
Then, you use this package as follows:
const serialize = require("w3c-xmlserializer");
console.log(serialize(node));
// => '<akomantoso xmlns="http://www.w3.org/1999/xhtml"></akomantoso>'
requireWellFormed
optionBy default the input DOM tree is not required to be "well-formed"; any given input will serialize to some output string. You can instead require well-formedness via
serialize(node, { requireWellFormed: true });
which will cause Error
s to be thrown when non-well-formed constructs are encountered. Per the spec, this largely is about imposing constraints on the names of elements, attributes, etc.
As a point of reference, on the web platform:
innerHTML
getter uses the require-well-formed mode, i.e. trying to get the innerHTML
of non-well-formed subtrees will throw.xhr.send()
method does not require well-formedness, i.e. sending non-well-formed Document
s will serialize and send them anyway.A per-spec XML serializer implementation
The npm package w3c-xmlserializer receives a total of 12,504,056 weekly downloads. As such, w3c-xmlserializer popularity was classified as popular.
We found that w3c-xmlserializer demonstrated a healthy version release cadence and project activity. It has 6 open source maintainers collaborating on the project.