readme.md 8.08 KB

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