muxml
v2.0.1
Published
Streaming XML parser and formatter
Downloads
223
Maintainers
Readme
muxml
Streaming XML parser and formatter
muxml
is a Transform stream that accepts XML strings, and emits small chunks containing individual XML elements.
The parser part of this module is built on sax
:saxophone:.
On parsing, the stream is broken-up and reassembled so that each opening/closing tag and each text is a chunk. During this process, sax events are re-emitted and are listenable down the pipeline.
Once XML is parsed, this module can optionally format XML in the following fashions:
- XML minification (de-indentation and removal of newlines)
- XML beautification (indentation and usage of newlines)
- striping of comments
- striping of
CDATA
- striping of instruction (like
<?xml foo="blerg" ?>
) tags - striping of
<!DOCTYPE
declarations - striping of attributes
- tag filtering based on tag name
muxml
is written with ES6/ES2015 syntax, although it is also shipped as an ES5 module with UMD syntax, meaning it can also be used:
- in Node.js >= 4
- in the browser, as global script
- in the browser, with an AMD loader
Also available as a gulp / Grunt plugin, or as a CLI app.
Install
$ npm install --save muxml
Usage
Suppose a file named example.xml
containing the follwing XML
<a id="foo">
<b>
<c>d</c>
</b>
</a>
then, muxml()
returns a transform stream that accepts XML strings and emits XML elements as strings
const muxml = require('muxml');
fs.createReadStream('example.xml')
.pipe(muxml({pretty: false}))
.on('data', function (data) {
console.log(data);
//=> '<b><c>d</c></b>'
});
Options
strict
Type: boolean
Default: true
Set sax
parser strict
argument
pretty
Type: boolean
Default: true
Prettify the output. If true, output has newlines and indentation.
indentStyle
Type: string
Default: spaces
When pretty
is set to true, indent with either spaces
or tabs
.
indentSpaces
Type: integer
Default: 2
When pretty
is set to true and indentStyle
is set to spaces
, then indent with this number of spaces.
indentTabs
Type: integer
Default: 1
When pretty
is set to true and indentStyle
is set to tabs
, then indent with this number of tabs.
filter
Type: string
Default: null
a filter for tag names
Filter XML with tags with name matching the filter.
stripAttributes
Type: boolean
Default: false
Strip attributes from tags.
stripCdata
Type: boolean
Default: true
Strip CDATA
tags.
stripComments
Type: boolean
Default: true
Strip XML comments.
stripDoctype
Type: boolean
Default: true
Strip <!DOCTYPE
declarations.
stripInstruction
Type: boolean
Default: true
Strip processing instruction (like <?xml foo="blerg" ?>
) tags.
saxOptions
Type: object
Default: {}
Set options of sax
parser. Note that trim
can not be set to false
.
API
muxml(options)
options
Type: object
as described above
Related
- muxml-cli | CLI for this module
- gulp-muxml | this module as a
gulp
plugin - grunt-muxml | this module as a
Grunt
plugin
License
MIT © t1st3