@technovilla/x-document
Version:
Javascript implementation of .NET XDocument
81 lines (80 loc) • 2.59 kB
JavaScript
;
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;