Skip to content


Switch branches/tags


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

Announcing xmlbuilder2:

The new release of xmlbuilder is available at xmlbuilder2! xmlbuilder2 has been redesigned from the ground up to be fully conforming to the modern DOM specification. It supports XML namespaces, provides built-in converters for multiple formats, collection functions, and more. Please see upgrading from xmlbuilder in the wiki.

New development will be focused towards xmlbuilder2; xmlbuilder will only receive critical bug fixes.


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.


Please consider becoming a backer or sponsor to help support development.

Donate Button