47 lines
1.3 KiB
JavaScript
47 lines
1.3 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.XmlDocument = void 0;
|
|
const XmlElement_js_1 = require("./XmlElement.js");
|
|
const XmlNode_js_1 = require("./XmlNode.js");
|
|
/**
|
|
* Represents an XML document. All elements within the document are descendants
|
|
* of this node.
|
|
*/
|
|
class XmlDocument extends XmlNode_js_1.XmlNode {
|
|
constructor(children = []) {
|
|
super();
|
|
this.children = children;
|
|
}
|
|
get document() {
|
|
return this;
|
|
}
|
|
/**
|
|
* Root element of this document, or `null` if this document is empty.
|
|
*/
|
|
get root() {
|
|
for (let child of this.children) {
|
|
if (child instanceof XmlElement_js_1.XmlElement) {
|
|
return child;
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
/**
|
|
* Text content of this document and all its descendants.
|
|
*/
|
|
get text() {
|
|
return this.children
|
|
.map(child => 'text' in child ? child.text : '')
|
|
.join('');
|
|
}
|
|
get type() {
|
|
return XmlNode_js_1.XmlNode.TYPE_DOCUMENT;
|
|
}
|
|
toJSON() {
|
|
return Object.assign(XmlNode_js_1.XmlNode.prototype.toJSON.call(this), {
|
|
children: this.children.map(child => child.toJSON()),
|
|
});
|
|
}
|
|
}
|
|
exports.XmlDocument = XmlDocument;
|
|
//# sourceMappingURL=XmlDocument.js.map
|