JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 6
  • Score
    100M100P100Q45821F
  • License BSD-3-Clause

An forgiving XML/HTML parser and serializer for JavaScript.

Package Exports

  • forgiving-xml-parser
  • forgiving-xml-parser/dist/index.cjs.js
  • forgiving-xml-parser/dist/index.esm.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (forgiving-xml-parser) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

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