angular-xml-editor
Version:
XML editor component for Angular
100 lines (99 loc) • 8.28 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
import { XmlSchema } from './xmlSchema.class';
var XmlSchemaLoader = /** @class */ (function () {
function XmlSchemaLoader(schemaContent) {
var _this = this;
if (!schemaContent || schemaContent === '') {
return;
}
/** @type {?} */
var domparser = new DOMParser();
/** @type {?} */
var schemaDom = domparser.parseFromString(schemaContent, 'text/xml');
/** @type {?} */
var result = [];
/** @type {?} */
var rawElementsAtRoot = /** @type {?} */ (Array.from(schemaDom.documentElement.childNodes));
rawElementsAtRoot.forEach(function (e) {
/** @type {?} */
var subChilds = _this.getRawElements(e);
result = result.concat(subChilds);
});
this.xmlSchema = new XmlSchema(this.getXsdNodes(/** @type {?} */ (result)));
}
/**
* @param {?} node
* @return {?}
*/
XmlSchemaLoader.prototype.getRawElements = /**
* @param {?} node
* @return {?}
*/
function (node) {
var _this = this;
/** @type {?} */
var result = [];
if (this.isValidXsdNode(node)) {
result = result.concat(node);
}
/** @type {?} */
var children = /** @type {?} */ (Array.from(node.childNodes));
children.forEach(function (child) {
result = result.concat(_this.getRawElements(child));
});
return result;
};
/**
* @param {?} node
* @return {?}
*/
XmlSchemaLoader.prototype.isValidXsdNode = /**
* @param {?} node
* @return {?}
*/
function (node) {
/** @type {?} */
var allowedXsdTypes = ['element', 'group', 'complexType'];
/** @type {?} */
var asElem = /** @type {?} */ (node);
if (asElem) {
if (allowedXsdTypes.includes(asElem.localName)) {
if (asElem.attributes.getNamedItem('name')) {
// console.warn(asElem.attributes.getNamedItem('name').value);
return true;
}
else {
return false;
}
}
else {
return false;
}
}
else {
return false;
}
};
/**
* @param {?} rawElements
* @return {?}
*/
XmlSchemaLoader.prototype.getXsdNodes = /**
* @param {?} rawElements
* @return {?}
*/
function (rawElements) {
// console.warn(rawElements.length);
return new Map(rawElements.map(function (n) { return [n.attributes.getNamedItem('name').value, /** @type {?} */ (n)]; }));
};
return XmlSchemaLoader;
}());
export { XmlSchemaLoader };
if (false) {
/** @type {?} */
XmlSchemaLoader.prototype.xmlSchema;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiWG1sU2NoZW1hTG9hZGVyLmNsYXNzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vYW5ndWxhci14bWwtZWRpdG9yLyIsInNvdXJjZXMiOlsibGliL2NvZGUveG1sLXJ1bGVzLWNoZWNrL1htbFNjaGVtYUxvYWRlci5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTlDLElBQUE7NkJBR3FCLGFBQXFCOztRQUN0QyxJQUFJLENBQUMsYUFBYSxJQUFJLGFBQWEsS0FBSyxFQUFFLEVBQUU7WUFDMUMsT0FBTztTQUNSOztRQUNELElBQU0sU0FBUyxHQUFHLElBQUksU0FBUyxFQUFFLENBQUM7O1FBQ2xDLElBQU0sU0FBUyxHQUFHLFNBQVMsQ0FBQyxlQUFlLENBQUMsYUFBYSxFQUFFLFVBQVUsQ0FBQyxDQUFDOztRQUl2RSxJQUFJLE1BQU0sR0FBVyxFQUFFLENBQUM7O1FBQ3hCLElBQU0saUJBQWlCLHFCQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQWMsRUFBQztRQUN4RixpQkFBaUIsQ0FBQyxPQUFPLENBQUMsVUFBQSxDQUFDOztZQUN6QixJQUFNLFNBQVMsR0FBRyxLQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3pDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ25DLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsbUJBQUMsTUFBbUIsRUFBQyxDQUFDLENBQUM7Ozs7OztJQUdoRSx3Q0FBYzs7OztjQUFDLElBQVU7OztRQUMvQixJQUFJLE1BQU0sR0FBVyxFQUFFLENBQUM7UUFDeEIsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQzdCLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzlCOztRQUVELElBQU0sUUFBUSxxQkFBRyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQVcsRUFBQztRQUN2RCxRQUFRLENBQUMsT0FBTyxDQUFDLFVBQUEsS0FBSztZQUNwQixNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7U0FDcEQsQ0FBQyxDQUFDO1FBRUgsT0FBTyxNQUFNLENBQUM7Ozs7OztJQUdSLHdDQUFjOzs7O2NBQUMsSUFBVTs7UUFDL0IsSUFBTSxlQUFlLEdBQUcsQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLGFBQWEsQ0FBQyxDQUFDOztRQUM1RCxJQUFNLE1BQU0scUJBQUcsSUFBZSxFQUFDO1FBRS9CLElBQUksTUFBTSxFQUFFO1lBQ1YsSUFBSSxlQUFlLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRTtnQkFDOUMsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRTs7b0JBRTFDLE9BQU8sSUFBSSxDQUFDO2lCQUNiO3FCQUFNO29CQUNMLE9BQU8sS0FBSyxDQUFDO2lCQUNkO2FBQ0Y7aUJBQU07Z0JBQ0wsT0FBTyxLQUFLLENBQUM7YUFDZDtTQUNGO2FBQU07WUFDTCxPQUFPLEtBQUssQ0FBQztTQUNkOzs7Ozs7SUFHSyxxQ0FBVzs7OztjQUFDLFdBQXNCOztRQUV4QyxPQUFPLElBQUksR0FBRyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQW9CLFVBQUEsQ0FBQyxJQUFJLE9BQUEsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLG9CQUFFLENBQVksRUFBQyxFQUF2RCxDQUF1RCxDQUFDLENBQUMsQ0FBQzs7MEJBM0RySDtJQTZEQyxDQUFBO0FBM0RELDJCQTJEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFhtbFNjaGVtYSB9IGZyb20gJy4veG1sU2NoZW1hLmNsYXNzJztcclxuXHJcbmV4cG9ydCBjbGFzcyBYbWxTY2hlbWFMb2FkZXIge1xyXG4gIHB1YmxpYyB4bWxTY2hlbWE6IFhtbFNjaGVtYTtcclxuXHJcbiAgcHVibGljIGNvbnN0cnVjdG9yKHNjaGVtYUNvbnRlbnQ6IHN0cmluZykge1xyXG4gICAgaWYgKCFzY2hlbWFDb250ZW50IHx8IHNjaGVtYUNvbnRlbnQgPT09ICcnKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGRvbXBhcnNlciA9IG5ldyBET01QYXJzZXIoKTtcclxuICAgIGNvbnN0IHNjaGVtYURvbSA9IGRvbXBhcnNlci5wYXJzZUZyb21TdHJpbmcoc2NoZW1hQ29udGVudCwgJ3RleHQveG1sJyk7XHJcbiAgICAvLyBjb25zdCByYXdFbGVtZW50cyA9IEFycmF5LmZyb20oc2NoZW1hRG9tLmRvY3VtZW50RWxlbWVudC5jaGlsZE5vZGVzKSBhcyBFbGVtZW50W107XHJcbiAgICAvLyB0aGlzLnhtbFNjaGVtYSA9IG5ldyBYbWxTY2hlbWEodGhpcy5nZXRYc2ROb2RlcyhyYXdFbGVtZW50cykpO1xyXG5cclxuICAgIGxldCByZXN1bHQ6IE5vZGVbXSA9IFtdO1xyXG4gICAgY29uc3QgcmF3RWxlbWVudHNBdFJvb3QgPSBBcnJheS5mcm9tKHNjaGVtYURvbS5kb2N1bWVudEVsZW1lbnQuY2hpbGROb2RlcykgYXMgRWxlbWVudFtdO1xyXG4gICAgcmF3RWxlbWVudHNBdFJvb3QuZm9yRWFjaChlID0+IHtcclxuICAgICAgY29uc3Qgc3ViQ2hpbGRzID0gdGhpcy5nZXRSYXdFbGVtZW50cyhlKTtcclxuICAgICAgcmVzdWx0ID0gcmVzdWx0LmNvbmNhdChzdWJDaGlsZHMpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnhtbFNjaGVtYSA9IG5ldyBYbWxTY2hlbWEodGhpcy5nZXRYc2ROb2RlcyhyZXN1bHQgYXMgRWxlbWVudFtdKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFJhd0VsZW1lbnRzKG5vZGU6IE5vZGUpOiBOb2RlW10ge1xyXG4gICAgbGV0IHJlc3VsdDogTm9kZVtdID0gW107XHJcbiAgICBpZiAodGhpcy5pc1ZhbGlkWHNkTm9kZShub2RlKSkge1xyXG4gICAgICByZXN1bHQgPSByZXN1bHQuY29uY2F0KG5vZGUpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGNoaWxkcmVuID0gQXJyYXkuZnJvbShub2RlLmNoaWxkTm9kZXMpIGFzIE5vZGVbXTtcclxuICAgIGNoaWxkcmVuLmZvckVhY2goY2hpbGQgPT4ge1xyXG4gICAgICByZXN1bHQgPSByZXN1bHQuY29uY2F0KHRoaXMuZ2V0UmF3RWxlbWVudHMoY2hpbGQpKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzVmFsaWRYc2ROb2RlKG5vZGU6IE5vZGUpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGFsbG93ZWRYc2RUeXBlcyA9IFsnZWxlbWVudCcsICdncm91cCcsICdjb21wbGV4VHlwZSddO1xyXG4gICAgY29uc3QgYXNFbGVtID0gbm9kZSBhcyBFbGVtZW50O1xyXG5cclxuICAgIGlmIChhc0VsZW0pIHtcclxuICAgICAgaWYgKGFsbG93ZWRYc2RUeXBlcy5pbmNsdWRlcyhhc0VsZW0ubG9jYWxOYW1lKSkge1xyXG4gICAgICAgIGlmIChhc0VsZW0uYXR0cmlidXRlcy5nZXROYW1lZEl0ZW0oJ25hbWUnKSkge1xyXG4gICAgICAgICAgLy8gY29uc29sZS53YXJuKGFzRWxlbS5hdHRyaWJ1dGVzLmdldE5hbWVkSXRlbSgnbmFtZScpLnZhbHVlKTtcclxuICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRYc2ROb2RlcyhyYXdFbGVtZW50czogRWxlbWVudFtdKSB7XHJcbiAgICAvLyBjb25zb2xlLndhcm4ocmF3RWxlbWVudHMubGVuZ3RoKTtcclxuICAgIHJldHVybiBuZXcgTWFwKHJhd0VsZW1lbnRzLm1hcDxbc3RyaW5nLCBFbGVtZW50XT4obiA9PiBbbi5hdHRyaWJ1dGVzLmdldE5hbWVkSXRlbSgnbmFtZScpLnZhbHVlLCBuIGFzIEVsZW1lbnRdKSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==