ts-xml-parser
A better xml parser written in pure typescript and works well with both node and deno.
Import to your project
For Node.js
Install it first:
// pay attention to the package name 'fsp-xml-parser'
npm install fsp-xml-parser
// or
yarn add fsp-xml-parser
Then import it:
const { parse } = require('fsp-xml-parser')
import { parse } from 'fsp-xml-parser'
For Deno
import parse from "https://denopkg.com/FullStackPlayer/ts-xml-parser/mod.ts"
import parse from "https://deno.land/x/ts_xml_parser/mod.ts"
import parse from "path/to/parser.ts"
Usage
Simple:
let xml = `
<?xml version="1.0" encoding="utf-8" ?>
<tagA></tagA>
`
let parsed = parse(xml)
Namespace:
let xml = `
<?xml version="1.0" encoding="utf-8" ?>
<propfind xmlns="DAV:" xmlns:R="RES:">
<R:allprop/>
</propfind>
`
let parsed = parse(xml,true)
Content:
let xml = `
<?xml version="1.0" encoding="utf-8" ?>
<tagA>
abc<![CDATA[123一二三]]>
</tagA>
`
let parsed = parse(xml)
Mixed Content (a node owns text content and child nodes at the same time):
let xml = `
<?xml version="1.0" encoding="utf-8" ?>
<father>
I have a son named John<fullname>Johnson</fullname>.
</father>
`
let parsed = parse(xml)
Deep Structure:
let xml = `
<?xml version="1.0" encoding="utf-8" ?>
<China>
<Henan></Henan>
<Shandong>
<Jinan alias="Quancheng">
<Lixia />
<Tianqiao>
There is a big train station<station type="train">Tianqiao Station</station>.
</Tianqiao>
</Jinan>
</Shandong>
</China>
`
let parsed = parse(xml)
ATTENTION
-
If you have single \
characters in <![CDATA[]>
, it will be ignored as an escape character
, if you are sure a single \
is necessary, type \\
instead.
-
<![CDATA[]]>
can not be nested in a node content, if you really want to do that, encode your inner <![CDATA[]]>
first, of course the receiver side should decode the content either.
Enjoy Yourself!