XML Parser for Deno

Usage

import { Parser, unescapeEntity } from 'https://deno.land/x/xmlparser@v0.2.0/mod.ts'

const xml = Deno.readTextFileSync('/path/to/some.xml')

const parser = new Parser({
  // options
})
const root = parser.parse(xml)

// get children by route (only support finding by tag name)
root.find(['parent-tag', 'child-tag'])
  .forEach(node => console.log(node.toString()))

// get one child by tag name (the first one of this tag name)
root.getChild('tag')?.getValue('')

// get one child by index
root.getChild(0)?.getValue(0)

// unescape html entities in strings
unescapeEntity(root.getChild('content')?.getValue('') || '')

Options

export interface Options {
  // skip parsing some tags, default to false (comparison of tag names is after removing namespace if ignoreNamespace)
  ignoreTags: false | string[]
  // skip parsing some attributes, default to false (true means skip all attributes)
  ignoreAttrs: boolean | string[]
  // skip namespace in tag names and attributes, default to true
  ignoreNamespace: boolean

  // parse node value to string | number | boolean, default to true
  reflectValues: boolean
  // parse node attributes to string | number | boolean, default to true
  reflectAttrs: boolean

  // trim string values of tags, default to true
  trimValues: boolean
  // trim string values of attributes, default to true
  trimAttrs: boolean
}