2.0.1 • Published 5 years ago

muxml v2.0.1

Weekly downloads
46
License
MIT
Repository
github
Last release
5 years ago

muxml Build Status Travis Coverage Status

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

License

MIT © t1st3

2.0.1

5 years ago

2.0.0

5 years ago

1.0.0

6 years ago

0.2.4

7 years ago

0.2.3

8 years ago

0.2.2

8 years ago

0.2.1

8 years ago

0.2.0

8 years ago

0.1.3

8 years ago

0.1.2

8 years ago

0.1.0

8 years ago