boomtjes

0.2.1 • Public • Published

Boomtjes Build Status

Boomtjes is a JavaScript library built for XML manipulation and XSD Schema validation. It depends on sax.js, loash.js, backbone.js and synths.js, and work on browser and CommonJS.

Goal

The original goal of Boomtjes is for helping me to work on a music score project. Boomtjes is currently been rewritten.

Usage

var source = '<hello><world a1="foo" a2="bar">Boomtjes</world>' +
                 '<e2>e2 content</e2>' +
                 '<e3><e3c1/><e3c2></e3c2><e3c3 a1="a"/></e3>' +
             '</hello>';
 
bj.parseXML(source, function (err, doc) {
    if (err) { throw (err); }
 
    doc.root().prefix('bj');
 
    var root = doc.root();
    root.prefix('bj');
 
    var el = new bj.Element('e3c1gc1', { grand: 'child'});
    root.children(2, 'children', 0, '#append', el);
    root.children(2, 'children', 2, 'text', '<HI THERE>')
 
    root.eachDescendant(function (el) { el.prefix('ha'); });
 
    console.log('root text:', root.text());
 
    var obj = JSON.parse(JSON.stringify(doc));
    console.log(util.inspect(obj, false, null, true));
    console.log('New XML:\n----------------\n' + doc);
});

The output will be

{ xml: { encoding: 'UTF8' },
  'bj:hello':
   [ { 'ha:world':
        { '$': { a1: 'foo', a2: 'bar' },
          _: 'Boomtjes' } },
     { 'ha:e2': 'e2 content' },
     { 'ha:e3':
        [ { 'ha:e3c1': { 'ha:e3c1gc1': { grand: 'child' } } },
          { 'ha:e3c2': null },
          { 'ha:e3c3':
             { '$': { a1: 'a' },
               _: '<HI THERE>' } } ] } ] }

New XML will be

<?xml version="1.0" encoding="UTF8"?>
<bj:hello>
  <ha:world a1="foo" a2="bar">Boomtjes</ha:world>
  <ha:e2>e2 content</ha:e2>
  <ha:e3>
    <ha:e3c1>
      <ha:e3c1gc1 grand="child"/>
      </ha:e3c1>
    <ha:e3c2/>
     <ha:e3c3 a1="a">&lt;HI THERE&gt;</ha:e3c3>
    </ha:e3>
  </bj:hello>

Examples

  • Use Boomtjes in browser: demo.html and demo/main.js
  • Use Boomtjes in Node: devel.js

Readme

Keywords

none

Package Sidebar

Install

npm i boomtjes

Weekly Downloads

2

Version

0.2.1

License

MIT

Last publish

Collaborators

  • malcomwu