Not Particularly Meaningful

    DefinitelyTyped icon, indicating that this package has TypeScript declarations provided by the separate @types/w3c-xmlserializer package

    3.0.0 • Public • Published


    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.

    Basic usage

    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");
    // => '<akomantoso xmlns=""></akomantoso>'

    requireWellFormed option

    By 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 Errors 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:

    • The innerHTML getter uses the require-well-formed mode, i.e. trying to get the innerHTML of non-well-formed subtrees will throw.
    • The xhr.send() method does not require well-formedness, i.e. sending non-well-formed Documents will serialize and send them anyway.


    npm i w3c-xmlserializer

    DownloadsWeekly Downloads






    Unpacked Size

    18 kB

    Total Files


    Last publish


    • timothygu
    • domenic
    • sebmaster
    • zirro
    • tmpvar
    • joris-van-der-wel