Infomaker JS module: Utility class for working with (reading, updating and creating) xml, nodes and attributes etc.


stars 🌟issues ⚠️updated 🛠created 🐣size 🏋️‍♀️
Minified + gzip package size for @infomaker/xml-handler in KB


XML handler client

A Client library simplifying working with XML.


npm install -s @infomaker/xml-handler


To run project test once use:

npm run test

or to enable auto-reload of test on save use:

npm run test-watch


import XmlHandler from '@infomaker/xml-handler'

Publish a new release

Use GitFlow with master/develop/feature/release branches to handle new functionality and versions. When a new release-branch has been created run one of the following scripts to bump-version, create a tag and commit new changes.

    npm run release:major
    npm run release:minor
    npm run release:hotfix

How to use

// Supports either xml-string or xml-document (will create own document if served with xml-string)
this.xmlHandler = new XmlHandler(this.conceptXml)

// Will transform xpath v. 2.0 wildcard namespace into 1.0 friendly value
// /*:conceptItem/*:itemMeta/*:links/*:link[@type='x-im/social+facebook'][@rel='irel:seeAlso']/@url
// /*[local-name(.) = 'conceptItem']/*[local-name(.) = 'itemMeta']/*[local-name(.) = 'links']/*[local-name(.) = 'link'][@type='x-im/social+twitter'][@rel='irel:seeAlso']/@url
const node = this.xmlHandler.getSafeNode(xpath)
const nodeValue = this.xmlHandler.getNodeValue(node)

// If the xpath doesent resolve to a node, create it like so:

if (!this.getSafeNode(xpath)) {
    // Will create all nodes down to the last expression in the xpath
    this.xmlHandler.setNodeValue(node, value)

// Remove node
const isRemoved = this.xmlHandler.removeNode(node)
if (isRemoved) {
    console.log('Node has been removed')

If you find any bugs or have a feature request, please open an issue on github!

The npm package download data comes from npm's download counts api and package details come from npms.io.