1.3.0 • Published 5 years ago

@lecafeautomatique/slimdom-sax-parser v1.3.0

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

slimdom-sax-parser

Parses XML to a slimdom document using saxes. slimdom is a fast, tiny, standards-compliant XML DOM implementation for browser and node.

  • Parses text, elements, attributes, processing instructions, comments and CDATA
  • Supports namespaces
  • Optionally track the position in XML string source
  • Works in NodeJS and the browser

Exports

  • sync (function) Synchronously return a slimdom Document for the given XML string.
  • slimdom (slimdom) A reference to the lib this parser is built around, as a convenience.
import { sync, slimdom } from 'slimdom-sax-parser';

Arguments

  • xml (string) The XML you want to parse as a string
  • options (object) Optional.
    • position (boolean) Set to true to track the position attribute on DOM nodes
sync('<foo />', { position: false });

Returns

A slimdom Document instance.

const document = sync('<foo />');

Examples

Modify the XML DOM:

import { sync } from 'slimdom-sax-parser';

const document = sync(`<foo />`);

document.documentElement.setAttribute('bar', 'baz');
// document.documentElement.hasAttribute('bar')

Use with an XPath engine (fontoxpath):

import { sync } from 'slimdom-sax-parser';
import { evaluateXPath } from 'fontoxpath';

const document = sync(`<foo><bar /><baz /></foo>`);
// evaluateXPath('/foo/*', document).length === 2

Use source code position tracking:

import { slimdom, sync } from 'slimdom-sax-parser';

const xml = '<example><child-element /></example>';

const document = sync(xml, { position: true });
// document instanceof slimdom.Document

const childElement = document.documentElement.firstChild;
// childElement instanceof slimdom.Element

const position = childElement.position;
// xml.substring(position.start, position.end) === '<child-element />'