XMLSerializer: serializeToString() method

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

The XMLSerializer method serializeToString() constructs a string representing the specified DOM tree in XML form.

Syntax

js
serializeToString(rootNode)

Parameters

rootNode

The Node to use as the root of the DOM tree or subtree for which to construct an XML representation.

Return value

A string containing the XML representation of the specified DOM tree.

Exceptions

TypeError

Thrown if the specified rootNode is not a compatible node type. The root node must be either Node or Attr.

InvalidStateError DOMException

Thrown if the tree could not be successfully serialized, probably due to issues with the content's compatibility with XML serialization.

SyntaxError DOMException

Thrown if a serialization of HTML was requested but could not succeed due to the content not being well-formed.

Usage notes

Compatible node types

The specified root node—and all of its descendants—must be compatible with the XML serialization algorithm. The root node itself must be either a Node or Attr object.

The following types are also permitted as descendants of the root node, in addition to Node and Attr:

If any other type is encountered, a TypeError exception is thrown.

Notes on the resulting XML

There are some things worth noting about the XML output by serializeToString():

  • For XML serializations, Element and Attr nodes are always serialized with their namespaceURI intact. This may mean that a previously-specified prefix or default namespace may be dropped or altered.
  • The resulting XML is compatible with the HTML parser.
  • Elements in the HTML namespace that have no child nodes (thereby representing empty tags) are serialized with both begin and end tags ("<someelement></someelement>") instead of using the empty-element tag ("<someelement/>").

Specifications

Specification
HTML
# dom-xmlserializer-serializetostring

Browser compatibility

desktop mobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
serializeToString
Chrome – Full support
Chrome 1 (Release date: 2008-12-11)
footnote Full support
Edge – Full support
Edge 12 (Release date: 2015-07-29)
footnote Full support
Firefox – Full support
Firefox 1 (Release date: 2004-11-09)
footnote Full support
Opera – Full support
Opera 12.1 (Release date: 2012-11-20)
footnote Full support
Safari – Full support
Safari 3 (Release date: 2007-10-26)
footnote Full support
Chrome Android – Full support
Chrome Android 18 (Release date: 2012-06-27)
footnote Full support
Firefox for Android – Full support
Firefox for Android 4 (Release date: 2011-03-29)
footnote Full support
Opera Android – Full support
Opera Android 12.1 (Release date: 2012-10-09)
footnote Full support
Safari on iOS – Full support
Safari on iOS 1 (Release date: 2007-06-29)
footnote Full support
Samsung Internet – Full support
Samsung Internet 1 (Release date: 2013-04-27)
footnote Full support
WebView Android – Full support
WebView Android 4.4 (Release date: 2013-12-09)
footnote Full support
WebView on iOS – Full support
WebView on iOS 1 (Release date: 2007-06-29)
footnote Full support

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

See also