UNPKG

@technovilla/x-document

Version:

Javascript implementation of .NET XDocument

81 lines (80 loc) 2.59 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var xmldom_1 = require("xmldom"); var XElement = /** @class */ (function () { function XElement(node) { this.node = node; } XElement.prototype.setValue = function (value) { this.node.textContent = value; }; XElement.prototype.setAttributeValue = function (name, value) { this.node.setAttribute(name, value); }; XElement.prototype.remove = function () { this.node.parentNode.removeChild(this.node); }; XElement.prototype.add = function (element) { this.node.appendChild(this._getNode(element)); }; XElement.prototype.addAfterSelf = function (element) { var parent = this.parent; var next = this._getInernalNode().nextSibling; if (next) { parent._getInernalNode().insertBefore(this._getNode(element), next); } else { parent.add(element); } }; Object.defineProperty(XElement.prototype, "parent", { get: function () { return new XElement(this.node.parentNode); }, enumerable: true, configurable: true }); Object.defineProperty(XElement.prototype, "value", { get: function () { return this.node.textContent; }, enumerable: true, configurable: true }); XElement.prototype._getInernalNode = function () { return this.node; }; XElement.prototype._getNode = function (element) { var node; if (element instanceof XElement) { node = element._getInernalNode(); } else if (typeof element === 'string') { node = XElement.parse(element, this.namespaceUri)._getInernalNode(); } else { throw new Error('Invlid type'); } return node; }; XElement.prototype.toString = function () { return this.node.toString(); }; Object.defineProperty(XElement.prototype, "namespaceUri", { get: function () { return this.node.namespaceURI; }, enumerable: true, configurable: true }); XElement.parse = function (text, namespaceUri) { var xml = '<root>' + text + '</root>'; if (namespaceUri) { xml = "<root xmlns=\"" + namespaceUri + "\">" + text + "</root>"; } var doc = new xmldom_1.DOMParser().parseFromString(xml); return new XElement(doc.documentElement.firstChild); }; return XElement; }()); exports.XElement = XElement;