It's native and full javascript implementation of the classic XMLWriter class. The API is complete, flexible and tolerant. XML is still valid.
With npm do:
$ npm install xml-writer
var XMLWriter = require('xml-writer');
xw = new XMLWriter;
xw.startDocument();
xw.startElement('root');
xw.writeAttribute('foo', 'value');
xw.text('Some content');
xw.endDocument();
console.log(xw.toString());
Output:
<?xml version="1.0"?>
<root foo="value">Some content</root>
var XMLWriter = require('xml-writer');
xw = new XMLWriter;
xw.startDocument().startElement('root').writeAttribute('foo', 'value').writeElement('tag', 'Some content');
console.log(xw.toString());
Output:
<?xml version="1.0"?>
<root foo="value"><tag>Some content</tag></root>
var XMLWriter = require('xml-writer');
xw = new XMLWriter;
xw.startElement('root').writeAttribute('foo', 'value').text('Some content');
console.log(xw.toString());
Output:
<root foo="value">Some content</root>
var XMLWriter = require('xml-writer'),
fs = require('fs');
var ws = fs.createWriteStream('/tmp/foo.xml');
ws.on('close', function() {
console.log(fs.readFileSync('/tmp/foo.xml', 'UTF-8'));
});
xw = new XMLWriter(false, function(string, encoding) {
ws.write(string, encoding);
});
xw.startDocument('1.0', 'UTF-8').startElement(function() {
return 'root';
}).text(function() {
return 'Some content';
});
ws.end();
Output:
<?xml version="1.0" encoding="UTF-8"?>
<root>Some content</root>
Use nodeunit to run the tests.
$ npm install nodeunit
$ nodeunit test
Create an new writer
Write text
Write a raw XML text
Create document tag
End current document
Write full element tag
Write full namespaced element tag
Create start namespaced element tag
Create start element tag
End current element
Write full attribute
Write full namespaced attribute
Create start namespaced attribute
Create start attribute
End attribute
Writes a PI
Create start PI tag
End current PI
Write full CDATA tag
Create start CDATA tag
End current CDATA
Write full comment tag
Create start comment
Create end comment