|
@@ -1,69 +1,69 @@
|
|
|
export type IXmlAttribute = Attr;
|
|
|
|
|
|
export class IXmlElement {
|
|
|
- public name: string;
|
|
|
- public value: string;
|
|
|
- public hasAttributes: boolean = false;
|
|
|
- public firstAttribute: IXmlAttribute;
|
|
|
- public hasElements: boolean;
|
|
|
+ public name: string;
|
|
|
+ public value: string;
|
|
|
+ public hasAttributes: boolean = false;
|
|
|
+ public firstAttribute: IXmlAttribute;
|
|
|
+ public hasElements: boolean;
|
|
|
|
|
|
- private attrs: IXmlAttribute[];
|
|
|
- private elem: Element;
|
|
|
+ private attrs: IXmlAttribute[];
|
|
|
+ private elem: Element;
|
|
|
|
|
|
- constructor(elem: Element) {
|
|
|
- this.elem = elem;
|
|
|
- this.name = elem.nodeName.toLowerCase();
|
|
|
+ constructor(elem: Element) {
|
|
|
+ this.elem = elem;
|
|
|
+ this.name = elem.nodeName.toLowerCase();
|
|
|
|
|
|
- if (elem.hasAttributes()) {
|
|
|
- this.hasAttributes = true;
|
|
|
- this.firstAttribute = elem.attributes[0];
|
|
|
- }
|
|
|
- this.hasElements = elem.hasChildNodes();
|
|
|
- // Look for a value
|
|
|
- if (elem.childNodes.length === 1 && elem.childNodes[0].nodeType === Node.TEXT_NODE) {
|
|
|
- this.value = elem.childNodes[0].nodeValue;
|
|
|
+ if (elem.hasAttributes()) {
|
|
|
+ this.hasAttributes = true;
|
|
|
+ this.firstAttribute = elem.attributes[0];
|
|
|
+ }
|
|
|
+ this.hasElements = elem.hasChildNodes();
|
|
|
+ // Look for a value
|
|
|
+ if (elem.childNodes.length === 1 && elem.childNodes[0].nodeType === Node.TEXT_NODE) {
|
|
|
+ this.value = elem.childNodes[0].nodeValue;
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
|
|
|
- public attribute(attributeName: string): IXmlAttribute {
|
|
|
- return this.elem.attributes.getNamedItem(attributeName);
|
|
|
- }
|
|
|
-
|
|
|
- public attributes(): IXmlAttribute[] {
|
|
|
- if (typeof this.attrs === "undefined") {
|
|
|
- let attributes: NamedNodeMap = this.elem.attributes;
|
|
|
- let attrs: IXmlAttribute[] = [];
|
|
|
- for (let i: number = 0; i < attributes.length; i += 1) {
|
|
|
- attrs.push(attributes[i]);
|
|
|
- }
|
|
|
- this.attrs = attrs;
|
|
|
+ public attribute(attributeName: string): IXmlAttribute {
|
|
|
+ return this.elem.attributes.getNamedItem(attributeName);
|
|
|
}
|
|
|
- return this.attrs;
|
|
|
- }
|
|
|
|
|
|
- public element(elementName: string): IXmlElement {
|
|
|
- return this.elements(elementName)[0];
|
|
|
- }
|
|
|
+ public attributes(): IXmlAttribute[] {
|
|
|
+ if (typeof this.attrs === "undefined") {
|
|
|
+ let attributes: NamedNodeMap = this.elem.attributes;
|
|
|
+ let attrs: IXmlAttribute[] = [];
|
|
|
+ for (let i: number = 0; i < attributes.length; i += 1) {
|
|
|
+ attrs.push(attributes[i]);
|
|
|
+ }
|
|
|
+ this.attrs = attrs;
|
|
|
+ }
|
|
|
+ return this.attrs;
|
|
|
+ }
|
|
|
|
|
|
- public elements(nodeName?: string): IXmlElement[] {
|
|
|
- let nodes: NodeList = this.elem.childNodes;
|
|
|
- let ret: IXmlElement[] = [];
|
|
|
- let nameUnset: boolean = nodeName === undefined;
|
|
|
- if (!nameUnset) {
|
|
|
- nodeName = nodeName.toLowerCase();
|
|
|
+ public element(elementName: string): IXmlElement {
|
|
|
+ return this.elements(elementName)[0];
|
|
|
}
|
|
|
- // console.log("-", nodeName, nodes.length, this.elem.childElementCount, this.elem.getElementsByTagName(nodeName).length);
|
|
|
- // if (nodeName === "measure") {
|
|
|
- // console.log(this.elem);
|
|
|
- // }
|
|
|
- for (let i: number = 0; i < nodes.length; i += 1) {
|
|
|
- let node: Node = nodes[i];
|
|
|
- //console.log("node: ", this.elem.nodeName, ">>", node.nodeName, node.nodeType === Node.ELEMENT_NODE);
|
|
|
- if (node.nodeType === Node.ELEMENT_NODE &&
|
|
|
- (nameUnset || node.nodeName.toLowerCase() === nodeName)) {
|
|
|
- ret.push(new IXmlElement(node as Element));
|
|
|
+
|
|
|
+ public elements(nodeName?: string): IXmlElement[] {
|
|
|
+ let nodes: NodeList = this.elem.childNodes;
|
|
|
+ let ret: IXmlElement[] = [];
|
|
|
+ let nameUnset: boolean = nodeName === undefined;
|
|
|
+ if (!nameUnset) {
|
|
|
+ nodeName = nodeName.toLowerCase();
|
|
|
+ }
|
|
|
+ // console.log("-", nodeName, nodes.length, this.elem.childElementCount, this.elem.getElementsByTagName(nodeName).length);
|
|
|
+ // if (nodeName === "measure") {
|
|
|
+ // console.log(this.elem);
|
|
|
+ // }
|
|
|
+ for (let i: number = 0; i < nodes.length; i += 1) {
|
|
|
+ let node: Node = nodes[i];
|
|
|
+ //console.log("node: ", this.elem.nodeName, ">>", node.nodeName, node.nodeType === Node.ELEMENT_NODE);
|
|
|
+ if (node.nodeType === Node.ELEMENT_NODE &&
|
|
|
+ (nameUnset || node.nodeName.toLowerCase() === nodeName)) {
|
|
|
+ ret.push(new IXmlElement(node as Element));
|
|
|
+ }
|
|
|
}
|
|
|
+ return ret;
|
|
|
}
|
|
|
- return ret;
|
|
|
- }
|
|
|
}
|