Files
2026-03-31 16:38:22 -07:00

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