Package Exports
- xmlbuilder2
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (xmlbuilder2) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
xmlbuilder2
An XML builder for node.js.
Installation:
npm install xmlbuilder2
Usage:
import { document } from 'xmlbuilder2';
const root = document()
.ele('topgun')
.ele('pilots')
.ele('pilot', { 'callsign': 'Iceman', 'rank': 'Lieutenant' }).txt('Tom Kazansky').up()
.ele('pilot', { 'callsign': 'Maverick', 'rank': 'Lieutenant' }).txt('Pete Mitchell').up()
.ele('pilot', { 'callsign': 'Goose', 'rank': 'Lieutenant (j.g.)' }).txt('Nick Bradshaw').up()
.up()
.ele('hangar')
.ele('aircraft').txt('F-14 Tomcat').up()
.ele('aircraft').txt('MiG-28')
.up()
.up()
// convert the XML tree to string
const xml = root.end({ prettyPrint: true });
console.log(xml);
will result in:
<?xml version="1.0"?>
<topgun>
<pilots>
<pilot callsign="Iceman" rank="Lieutenant">Tom Kazansky</pilot>
<pilot callsign="Maverick" rank="Lieutenant">Pete Mitchell</pilot>
<pilot callsign="Goose" rank="Lieutenant (j.g.)">Nick Bradshaw</pilot>
</pilots>
<hangar>
<aircraft>F-14 Tomcat</aircraft>
<aircraft>MiG-28</aircraft>
</hangar>
</topgun>
The same XML document can be created by converting a JS object into XML nodes:
import { document } from 'xmlbuilder2';
const obj = {
topgun: {
pilots: {
pilot: [
{ '@callsign': 'Iceman', '@rank': 'Lieutenant', '#': 'Tom Kazansky' },
{ '@callsign': 'Maverick', '@rank': 'Lieutenant', '#': 'Pete Mitchell' },
{ '@callsign': 'Goose', '@rank': 'Lieutenant (j.g.)', '#': 'Nick Bradshaw' }
]
},
hangar: {
aircraft: [
{ '#': 'F-14 Tomcat' },
{ '#': 'MiG-28' }
]
}
}
}
const doc = document(obj);
const xml = doc.end({ prettyPrint: true });
console.log(xml);
If you need to do some processing:
import { document } from 'xmlbuilder2';
const root = document().ele('squares');
root.com('f(x) = x^2');
for(let i = 1; i <= 5; i++)
{
const item = root.ele('data');
item.att('x', i.toString());
item.att('y', (i * i).toString());
}
const xml = root.end({ prettyPrint: true });
console.log(xml);
This will result in:
<?xml version="1.0"?>
<squares>
<!-- 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"/>
</squares>
See the wiki for details.