xmldom-ts
    TypeScript icon, indicating that this package has built-in type declarations

    0.3.1 • Public • Published

    XMLDOM-TS library

    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.

    Requirements

    Release Notes

    See CHANGELOG.md

    Usage

    Install with npm:

    npm install xmldom-ts
    

    Example:

    • 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);

    API Documentation

    • DOMParser:

      	```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)

    • 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

    Developing and Testing

    Download

    git clone 'https://github.com/backslash47/xmldom'
    cd xmldom-ts
    

    Install

    npm install
    

    Build

    npm run build
    

    You will get the transpiled code under '/dist/lib' and typings under '/dist/types'.

    Test

    Run standard tests with Mocha + Chai testing framework

    npm test
    

    Authors

    Licence

    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.

    Install

    npm i xmldom-ts

    DownloadsWeekly Downloads

    434

    Version

    0.3.1

    License

    MIT

    Unpacked Size

    628 kB

    Total Files

    250

    Last publish

    Collaborators

    • backslash47