Name Last Update
..
lib Loading commit data...
CHANGELOG.md Loading commit data...
LICENSE Loading commit data...
package.json Loading commit data...
readme.md Loading commit data...

XMLDOM

license npm bug issues "help wanted" issues Mutation report

A JavaScript implementation of W3C DOM for Node.js, Rhino and the browser. Fully compatible with W3C DOM level2; and some compatible with level3. Supports DOMParser and XMLSerializer interface such as in browser.

Original project location: https://github.com/jindw/xmldom

Install:

npm install xmldom

Example:

const { DOMParser } = require('xmldom')

const doc = new DOMParser().parseFromString(
    '<xml xmlns="a" xmlns:c="./lite">\n' +
        '\t<child>test</child>\n' +
        '\t<child></child>\n' +
        '\t<child/>\n' +
        '</xml>',
    'text/xml'
)
doc.documentElement.setAttribute('x', 'y')
doc.documentElement.setAttributeNS('./lite', 'c:x', 'y2')
console.info(doc)

const nsAttr = doc.documentElement.getAttributeNS('./lite', 'x')
console.info(nsAttr)

Note: in Typescript and ES6 you can use the import approach, as follows:

import { DOMParser } from 'xmldom'

API Reference

  • DOMParser:

    parseFromString(xmlsource,mimeType)
    
    • options extension by xmldom(not BOM standard!!)
    //added the options argument
    new DOMParser(options)
    
    //errorHandler is supported
    new DOMParser({
        /**
         * locator is always need for error position info
         */
        locator:{},
        /**
         * you can override the errorHandler for xml parser
         * @link http://www.saxproject.org/apidoc/org/xml/sax/ErrorHandler.html
         */
        errorHandler:{warning:function(w){console.warn(w)},error:callback,fatalError:callback}
        //only callback model
        //errorHandler:function(level,msg){console.log(level,msg)}
    })
    
    
  • XMLSerializer

    serializeToString(node)
    

    DOM level2 method and attribute:

  • Node

    attribute:
        nodeValue|prefix
    readonly attribute:
        nodeName|nodeType|parentNode|childNodes|firstChild|lastChild|previousSibling|nextSibling|attributes|ownerDocument|namespaceURI|localName
    method: 
        insertBefore(newChild, refChild)
        replaceChild(newChild, oldChild)
        removeChild(oldChild)
        appendChild(newChild)
        hasChildNodes()
        cloneNode(deep)
        normalize()
        isSupported(feature, version)
        hasAttributes()
    
    • DOMException The DOMException class has the following constants (and value of type Number):
  1. DOMException.INDEX_SIZE_ERR (1)
  2. DOMException.DOMSTRING_SIZE_ERR (2)
  3. DOMException.HIERARCHY_REQUEST_ERR (3)
  4. DOMException.WRONG_DOCUMENT_ERR (4)
  5. DOMException.INVALID_CHARACTER_ERR (5)
  6. DOMException.NO_DATA_ALLOWED_ERR (6)
  7. DOMException.NO_MODIFICATION_ALLOWED_ERR (7)
  8. DOMException.NOT_FOUND_ERR (8)
  9. DOMException.NOT_SUPPORTED_ERR (9)
  10. DOMException.INUSE_ATTRIBUTE_ERR (10)
  11. DOMException.INVALID_STATE_ERR (11)
  12. DOMException.SYNTAX_ERR (12)
  13. DOMException.INVALID_MODIFICATION_ERR (13)
  14. DOMException.NAMESPACE_ERR (14)
  15. DOMException.INVALID_ACCESS_ERR (15)

The DOMException object has the following properties: code This property is of type Number.

 * extends the Error type thrown as part of DOM API:
  • DOMImplementation

    method:
        hasFeature(feature, version)
        createDocumentType(qualifiedName, publicId, systemId)
        createDocument(namespaceURI, qualifiedName, doctype)
    
  • Document : Node

    readonly attribute:
        doctype|implementation|documentElement
    method:
        createElement(tagName)
        createDocumentFragment()
        createTextNode(data)
        createComment(data)
        createCDATASection(data)
        createProcessingInstruction(target, data)
        createAttribute(name)
        createEntityReference(name)
        getElementsByTagName(tagname)
        importNode(importedNode, deep)
        createElementNS(namespaceURI, qualifiedName)
        createAttributeNS(namespaceURI, qualifiedName)
        getElementsByTagNameNS(namespaceURI, localName)
        getElementById(elementId)
    
  • DocumentFragment : Node

  • Element : Node

    readonly attribute:
        tagName
    method:
        getAttribute(name)
        setAttribute(name, value)
        removeAttribute(name)
        getAttributeNode(name)
        setAttributeNode(newAttr)
        removeAttributeNode(oldAttr)
        getElementsByTagName(name)
        getAttributeNS(namespaceURI, localName)
        setAttributeNS(namespaceURI, qualifiedName, value)
        removeAttributeNS(namespaceURI, localName)
        getAttributeNodeNS(namespaceURI, localName)
        setAttributeNodeNS(newAttr)
        getElementsByTagNameNS(namespaceURI, localName)
        hasAttribute(name)
        hasAttributeNS(namespaceURI, localName)
    
  • Attr : Node

    attribute:
        value
    readonly attribute:
        name|specified|ownerElement
    
  • NodeList

    readonly attribute:
        length
    method:
        item(index)
    
  • NamedNodeMap

    readonly attribute:
        length
    method:
        getNamedItem(name)
        setNamedItem(arg)
        removeNamedItem(name)
        item(index)
        getNamedItemNS(namespaceURI, localName)
        setNamedItemNS(arg)
        removeNamedItemNS(namespaceURI, localName)
    
  • CharacterData : Node

    method:
        substringData(offset, count)
        appendData(arg)
        insertData(offset, arg)
        deleteData(offset, count)
        replaceData(offset, count, arg)
    
  • Text : CharacterData

    method:
        splitText(offset)
    
  • CDATASection

  • Comment : CharacterData

  • DocumentType

    readonly attribute:
        name|entities|notations|publicId|systemId|internalSubset
    
  • Notation : Node

    readonly attribute:
        publicId|systemId
    
  • Entity : Node

    readonly attribute:
        publicId|systemId|notationName
    
  • EntityReference : Node

  • ProcessingInstruction : Node

    attribute:
        data
    readonly attribute:
        target
    

DOM level 3 support:

  • Node

    attribute:
        textContent
    method:
        isDefaultNamespace(namespaceURI){
        lookupNamespaceURI(prefix)
    

DOM extension by xmldom

  • [Node] Source position extension;

    attribute:
        //Numbered starting from '1'
        lineNumber
        //Numbered starting from '1'
        columnNumber