xmldom

A pure JavaScript W3C standard-based (XML DOM Level 2 Core) DOMParser and XMLSerializer module.

  • xmldom

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
xmldom
323320.6.03 years ago12 years agoMinified + gzip package size for xmldom in KB

Readme

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:

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:
```javascript
parseFromString(xmlsource,mimeType)
```
* **options extension** _by xmldom_(not BOM standard!!)

```javascript
//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
```javascript
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()
The DOMException class has the following constants (and `value` of type `Number`):

1. DOMException.INDEX_SIZE_ERR (1) 1. DOMException.DOMSTRING_SIZE_ERR (2) 1. DOMException.HIERARCHY_REQUEST_ERR (3) 1. DOMException.WRONG_DOCUMENT_ERR (4) 1. DOMException.INVALID_CHARACTER_ERR (5) 1. DOMException.NO_DATA_ALLOWED_ERR (6) 1. DOMException.NO_MODIFICATION_ALLOWED_ERR (7) 1. DOMException.NOT_FOUND_ERR (8) 1. DOMException.NOT_SUPPORTED_ERR (9) 1. DOMException.INUSE_ATTRIBUTE_ERR (10) 1. DOMException.INVALID_STATE_ERR (11) 1. DOMException.SYNTAX_ERR (12) 1. DOMException.INVALID_MODIFICATION_ERR (13) 1. DOMException.NAMESPACE_ERR (14) 1. 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