Socket
Socket
Sign inDemoInstall

saxen

Package Overview
Dependencies
0
Maintainers
1
Versions
34
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    saxen

A tiny, super fast, namespace aware sax-style XML parser written in plain JavaScript


Version published
Maintainers
1
Install size
28.4 kB
Created

Changelog

Source

4.0.1

  • DOCS: improve readme

Readme

Source

/saxen/ parser

Build Status

A tiny, super fast, namespace aware sax-style XML parser written in plain JavaScript.

Features

  • (optional) entity decoding and attribute parsing
  • (optional) namespace aware
  • element / attribute normalization in namespaced mode
  • tiny (4Kb minified + gzipped)

Usage

var Parser = require('saxen');

var parser = new Parser();

// enable namespace parsing: element prefixes will
// automatically adjusted to the ones configured here
// elements in other namespaces will still be processed
parser.ns({
  'http://foo': 'foo',
  'http://bar': 'bar'
});

parser.on('openTag', function(elementName, attrGetter, decodeEntity, selfClosing, getContext) {

  elementName;
  // with prefix, i.e. foo:blub

  var attrs = attrGetter();
  // { 'bar:aa': 'A', ... }
});

parser.parse('<blub xmlns="http://foo" xmlns:bar="http://bar" bar:aa="A" />');

Supported Hooks

We support the following parse hooks:

  • openTag(elementName, attrGetter, decodeEntities, selfClosing, contextGetter)
  • closeTag(elementName, selfClosing, contextGetter)
  • error(err, contextGetter)
  • warn(warning, contextGetter)
  • text(value, decodeEntities)
  • cdata(value)
  • comment(value, decodeEntities)
  • attention(str, decodeEntities)
  • question(str)

In contrast to error, warn receives recoverable errors, such as malformed attributes.

Namespace Handling

In namespace mode, the parser will adjust tag and attribute namespace prefixes before passing the elements name to openTag or closeTag. To do that, you need to configure default prefixes for wellknown namespaces:

parser.ns({
  'http://foo': 'foo',
  'http://bar': 'bar'
});

To skip the adjustment and still process namespace information:

parser.ns();

Non-Features

/saxen/ lacks some features known in other XML parsers such as sax-js:

  • no support for parsing loose documents, such as arbitrary HTML snippets
  • no support for text trimming
  • no automatic entity decoding
  • no automatic attribute parsing

...and that is ok ❤.

Credits

We build on the awesome work done by easysax.

/saxen/ is named after Sachsen, a federal state of Germany. So geht sächsisch!

LICENSE

MIT

Keywords

FAQs

Last updated on 09 Nov 2017

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc