A TypeScript implementation of W3C DOM for Node.js, Rhino and the browser. Fully compatible with W3C DOM level2
; and some compatible with level3
. Supports DOMParser
, XMLSerializer
and DOMImplementation
interface such as in browser.
Based on the great work of XMLDOM.
See CHANGELOG.md
Install with npm:
npm install xmldom-ts
-
Transparent import
import 'xmldom-ts'; const parser = new DOMParser();
-
Direct import to specify XMLDOM specific options
import { DOMParserImpl } from 'xmldom-ts'; const parser = new DOMParserImpl({});
-
Usage
import 'xmldom-ts'; 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'); const nsAttr = doc.documentElement.getAttributeNS('./lite', 'x'); console.info(nsAttr); console.info(doc);
-
```javascript parseFromString(xmlsource,mimeType) ``` * **options extension** _by xmldom_(not BOM standard!!) ```javascript //added the options argument new DOMParserImpl(options) //errorHandler is supported new DOMParserImpl({ /** * 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()
-
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)
-
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
- Node attribute: textContent method: isDefaultNamespace(namespaceURI){ lookupNamespaceURI(prefix)
- [Node] Source position extension; attribute: //Numbered starting from '1' lineNumber //Numbered starting from '1' columnNumber
git clone 'https://github.com/backslash47/xmldom'
cd xmldom-ts
npm install
npm run build
You will get the transpiled code under '/dist/lib' and typings under '/dist/types'.
Run standard tests with Mocha + Chai testing framework
npm test
- jindw - Initial work - blog
- Yaron Naveh - blog
- Harutyun Amirjanyan - Nightwing
- Alan Gutierrez - web
- Matus Zamborsky - TypeScript rewrite - Backslash47
This project is licensed under the MIT License - see the LICENSE.md file for details. The XMLDOM this project is build on is dual licensed under the MIT/LGPL licence.