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
🎷.
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
d
then, muxml()
returns a transform stream that accepts XML strings and emits XML elements as strings
const muxml = ; fs ;
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