Skip to content
An XML builder for node.js
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
perf Show performance test results as table Oct 17, 2019
src Check root when importing into empty document. Closes #213 May 22, 2019
test Add test for #222 Jul 29, 2019
typings Document namespace May 10, 2019
.gitignore Ignore nyc output folder Mar 29, 2019
.npmignore Ignore nyc coverage directory Mar 29, 2019
.nycrc Switch to nyc Mar 29, 2019
.travis.yml Remove tests for node 4 and 5 Mar 29, 2019 Add changelog for 13.0.2 May 22, 2019
LICENSE Add license file Dec 2, 2013
appveyor.yml Remove tests for node 4 and 5 Mar 29, 2019
package.json Add performance tests Sep 18, 2019


An XML builder for node.js similar to java-xmlbuilder.

License NPM Version NPM Downloads

Travis Build Status AppVeyor Build status Dev Dependency Status Code Coverage


npm install xmlbuilder


var builder = require('xmlbuilder');

var xml = builder.create('root')
    .ele('repo', {'type': 'git'}, 'git://')
  .end({ pretty: true});


will result in:

<?xml version="1.0"?>
    <repo type="git">git://</repo>

It is also possible to convert objects into nodes:

var builder = require('xmlbuilder');

var obj = {
  root: {
    xmlbuilder: {
      repo: {
        '@type': 'git', // attributes start with @
        '#text': 'git://' // text node

var xml = builder.create(obj).end({ pretty: true});

If you need to do some processing:

var builder = require('xmlbuilder');

var root = builder.create('squares');'f(x) = x^2');
for(var i = 1; i <= 5; i++)
  var item = root.ele('data');
  item.att('x', i);
  item.att('y', i * i);

var xml = root.end({ pretty: true});

This will result in:

<?xml version="1.0"?>
  <!-- f(x) = x^2 -->
  <data x="1" y="1"/>
  <data x="2" y="4"/>
  <data x="3" y="9"/>
  <data x="4" y="16"/>
  <data x="5" y="25"/>

See the wiki for details and examples for more complex examples.

You can’t perform that action at this time.