boomtjes
XML Tree manipulation
Last updated 7 years ago by malcomwu .
MIT · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install boomtjes 
SYNC missed versions from official npm registry.

Boomtjes

Boomtjes - a JavaScript library for XML Tree with XSD Schema validation.

Boomtjes depends on sax.js, loash.js and backbone.js, and work on browser and CommonJS such as NodeJS. The design of Boomtjes is influenced by BackboneJS.

Goal

The original goal of Boomtjes is for helping me to work on a music score project[ref]. Since there are more than four hundred element in MusicXML[ref] to deal with.

Current Boomtjes can read XML files, manipulate the data model, convert it to a JSON representation and convert the data model back to XML as well.

API Documentation

The status of all API's are in the level of experimental. This project is on developing...

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.childAt(2).firstChild().append(el);

    root.eachDescendant(function (el) {
        if (el instanceof bj.Element) {
            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: { version: '1.0', 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' } } ] } ] }

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"/>
    </ha:e3>
  </bj:hello>

Examples

  • Use Boomtjes in browser

    demo.html
    demo/main.js
    
  • Use Boomtjes in NodeJS

    devel.js
    

Brainstorming

For insperation...

Current Tags

  • 0.2.1                                ...           latest (7 years ago)

4 Versions

  • 0.2.1                                ...           7 years ago
  • 0.2.0                                ...           7 years ago
  • 0.1.2                                ...           7 years ago
  • 0.1.1                                ...           7 years ago
Maintainers (1)
Downloads
Today 0
This Week 0
This Month 0
Last Day 0
Last Week 0
Last Month 4
Dependencies (3)
Dev Dependencies (2)

Copyright 2014 - 2016 © taobao.org |