🎩 You're Invited:Meet the Socket team at Black Hat in Las Vegas, August 3-6.RSVP
Sign In

fast-xml-builder

Package Overview
Dependencies
Maintainers
1
Versions
14
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

fast-xml-builder

Build XML from JSON without C/C++ based libraries

latest
Source
npmnpm
Version
1.3.0
Version published
Weekly downloads
45M
0.22%
Maintainers
1
Weekly downloads
 
Created
Source

fast-xml-builder

Build XML from JSON

fast-xml-builder downloads fast-xml-builder version fast-xml-builder license

XML Builder was part of fast-xml-parser for years. But considering that any bug in the parser may false-alarm users who are only using the builder, we have decided to split it into a separate package.

Installation

npm install fast-xml-builder

Usage

import XMLBuilder from 'fast-xml-builder';

const builder = new XMLBuilder();
const xml = builder.build({ name: 'value' });

fast-xml-builder fully supports the response generated by fast-xml-parser. You can use options like preserveOrder, ignoreAttributes, attributeNamePrefix, textNodeName, cdataPropName, commentPropName, format, indentBy, suppressEmptyNode, suppressUnpairedNode, stopNodes, oneListGroup, maxNestedTags, and many more.

Default Options

{
  attributeNamePrefix: '@_',
  attributesGroupName: false,
  textNodeName: '#text',
  ignoreAttributes: true,
  cdataPropName: false,
  commentPropName: false,
  format: false,
  indentBy: '  ',
  suppressEmptyNode: false,
  suppressUnpairedNode: true,
  suppressBooleanAttributes: true,
  preserveOrder: false,
  processEntities: true,
  unpairedTags: [],
  stopNodes: [],
  oneListGroup: false,
  maxNestedTags: 100,
  jPath: true,
  tagValueProcessor: (key, val) => val,
  attributeValueProcessor: (attrName, val) => val,
}

Options Reference

Check Options reference for more detail and examples.

  • arrayNodeName: When building XML from an array, set arrayNodeName to wrap each element in a tag name.
  • attributeNamePrefix: Prefix used to identify attribute properties in the JS object. Default: '@_'.
  • attributesGroupName: Group name for attributes in the JS object. When set, all attributes are expected to be nested under this key. Not supported with preserveOrder: true.
  • attributeValueProcessor: Customize how attribute values are serialized. Receives the attribute name and value.
  • cdataPropName: Property name that identifies CDATA content. Values under this key are wrapped in <![CDATA[...]]>.
  • commentPropName: Property name that identifies comment content. Values under this key are rendered as <!-- ... -->.
  • format: By default, output is a single-line XML string. Set format: true for human-readable, indented output.
  • ignoreAttributes: By default (true), attributes are skipped. Set to false to include them. Also supports selective ignoring via an array of strings, array of regular expressions, or a callback function.
  • indentBy: String used for each level of indentation. Default: ' ' (two spaces). Only applies when format: true.
  • maxNestedTags: Limits the maximum depth of nested tags. An error is thrown if this depth is exceeded. Default: 100.
  • oneListGroup: Groups all repeated child tags under a single parent tag.
  • preserveOrder: When a JS object was produced by XMLParser with preserveOrder: true, pass the same option to XMLBuilder to reconstruct the original XML correctly.
  • processEntities: When true (default), special characters in text and attribute values are replaced with XML entities (&amp;, &lt;, etc.). Set to false for a performance boost when you know your content has no entities. Note: quotes in attribute values are always escaped regardless of this setting.
  • stopNodes: Tags listed here are treated as raw content containers — their text content is written as-is without entity encoding. Accepts an array of tag name strings or Expression instances from path-expression-matcher. The old *.tagName wildcard syntax is still accepted and automatically converted to the equivalent ..tagName deep-wildcard syntax.
  • suppressBooleanAttributes: When true (default), attributes with the value true are rendered without the value (e.g. <tag attr> instead of <tag attr="true">).
  • suppressEmptyNode: When true, tags with no text value are rendered as self-closing (<tag/>).
  • suppressUnpairedNode: When true (default), unpaired tags are rendered without a closing slash (<br>). When false, they are rendered as <br/>.
  • tagValueProcessor: Customize how tag text values are serialized. Receives the tag name and value.
  • textNodeName: Property name representing the text content of a tag in the JS object. Default: '#text'.
  • unpairedTags: List of tag names that have no matching closing tag (e.g. <br> in HTML).

Keywords

xml

FAQs

Package last updated on 11 Jul 2026

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts