/forgiving-xml-parser

An XML/HTML parser and serializer for JavaScript.

Primary LanguageTypeScriptBSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

forgiving-xml-parser

Build Status image image image

Enligsh | 简体中文

An XML/HTML parser and serializer for JavaScript. Playground

spec

Features

  • Transform XML/HTML to JSON(carry code locationInfo or parse steps)
  • Transform JSON back to XML
  • Works with node packages, in browser(like browser such as Miniprogram)
  • Various options are available to customize the transformation
    • custom parsing behavior(souch as allow node-name is empty)
    • supported events
    • custom node parser

Usage

  • 1.install
# using npm
npm i forgiving-xml-parser -S
# using yarn
yarn add forgiving-xml-parser
  • 2.include
// in node
const ForgivingXmlParser = require('forgiving-xml-parser');
const json = ForgivingXmlParser.parse('...');

// in webpack
import {parse, serialize, ...} from 'forgiving-xml-parser';
const json = parse('...');
<!-- in browser -->
<script src="xxx/forgiving-xml-parser.js"></script>
<script>
    // global variable
    const json = ForgivingXmlParser.parse("...");
</script>
  • 3.use
const { parse, serialize, parseResultToJSON, FxParser } = require("forgiving-xml-parser");

const xml = `<p>hi xml</p>`;
const json = parseResultToJSON(parse(xml), {
    allowAttrContentHasBr: true,
    allowNodeNameEmpty: true,
    allowNodeNotClose: true,
    allowStartTagBoundaryNearSpace: true,
    allowEndTagBoundaryNearSpace: true,
    allowTagNameHasSpace: true,
    allowNearAttrEqualSpace: true,
    ignoreTagNameCaseEqual: false,
    onEvent(type, context, data) {},
}); // { "nodes": [{ "type": "element", "name": "p", "children": [{ "type": "text", "content": "hi xml" }] }] }

serialize(json); // <p>hi xml</p>

const fxParser = new FxParser();
const json2 = parseResultToJSON(fxParser.parse(xml));
console.log(JSON.stringify(json2) === JSON.stringify(json)); // true
console.log(fxParser.serialize(json2) === serialize(json)); // true
Event trigger timing

Legend