UNPKG

angular-xml-editor

Version:
87 lines (86 loc) 7.79 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc */ import { XmlSchema } from './xmlSchema.class'; export class XmlSchemaLoader { /** * @param {?} schemaContent */ constructor(schemaContent) { if (!schemaContent || schemaContent === '') { return; } /** @type {?} */ const domparser = new DOMParser(); /** @type {?} */ const schemaDom = domparser.parseFromString(schemaContent, 'text/xml'); /** @type {?} */ let result = []; /** @type {?} */ const rawElementsAtRoot = /** @type {?} */ (Array.from(schemaDom.documentElement.childNodes)); rawElementsAtRoot.forEach(e => { /** @type {?} */ const subChilds = this.getRawElements(e); result = result.concat(subChilds); }); this.xmlSchema = new XmlSchema(this.getXsdNodes(/** @type {?} */ (result))); } /** * @param {?} node * @return {?} */ getRawElements(node) { /** @type {?} */ let result = []; if (this.isValidXsdNode(node)) { result = result.concat(node); } /** @type {?} */ const children = /** @type {?} */ (Array.from(node.childNodes)); children.forEach(child => { result = result.concat(this.getRawElements(child)); }); return result; } /** * @param {?} node * @return {?} */ isValidXsdNode(node) { /** @type {?} */ const allowedXsdTypes = ['element', 'group', 'complexType']; /** @type {?} */ const 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 {?} */ getXsdNodes(rawElements) { // console.warn(rawElements.length); return new Map(rawElements.map(n => [n.attributes.getNamedItem('name').value, /** @type {?} */ (n)])); } } if (false) { /** @type {?} */ XmlSchemaLoader.prototype.xmlSchema; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiWG1sU2NoZW1hTG9hZGVyLmNsYXNzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vYW5ndWxhci14bWwtZWRpdG9yLyIsInNvdXJjZXMiOlsibGliL2NvZGUveG1sLXJ1bGVzLWNoZWNrL1htbFNjaGVtYUxvYWRlci5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTlDLE1BQU07Ozs7Z0JBR2UsYUFBcUI7UUFDdEMsSUFBSSxDQUFDLGFBQWEsSUFBSSxhQUFhLEtBQUssRUFBRSxFQUFFO1lBQzFDLE9BQU87U0FDUjs7UUFDRCxNQUFNLFNBQVMsR0FBRyxJQUFJLFNBQVMsRUFBRSxDQUFDOztRQUNsQyxNQUFNLFNBQVMsR0FBRyxTQUFTLENBQUMsZUFBZSxDQUFDLGFBQWEsRUFBRSxVQUFVLENBQUMsQ0FBQzs7UUFJdkUsSUFBSSxNQUFNLEdBQVcsRUFBRSxDQUFDOztRQUN4QixNQUFNLGlCQUFpQixxQkFBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFjLEVBQUM7UUFDeEYsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFOztZQUM1QixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3pDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ25DLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsbUJBQUMsTUFBbUIsRUFBQyxDQUFDLENBQUM7Ozs7OztJQUdoRSxjQUFjLENBQUMsSUFBVTs7UUFDL0IsSUFBSSxNQUFNLEdBQVcsRUFBRSxDQUFDO1FBQ3hCLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUM3QixNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUM5Qjs7UUFFRCxNQUFNLFFBQVEscUJBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFXLEVBQUM7UUFDdkQsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN2QixNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7U0FDcEQsQ0FBQyxDQUFDO1FBRUgsT0FBTyxNQUFNLENBQUM7Ozs7OztJQUdSLGNBQWMsQ0FBQyxJQUFVOztRQUMvQixNQUFNLGVBQWUsR0FBRyxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsYUFBYSxDQUFDLENBQUM7O1FBQzVELE1BQU0sTUFBTSxxQkFBRyxJQUFlLEVBQUM7UUFFL0IsSUFBSSxNQUFNLEVBQUU7WUFDVixJQUFJLGVBQWUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFO2dCQUM5QyxJQUFJLE1BQU0sQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFOztvQkFFMUMsT0FBTyxJQUFJLENBQUM7aUJBQ2I7cUJBQU07b0JBQ0wsT0FBTyxLQUFLLENBQUM7aUJBQ2Q7YUFDRjtpQkFBTTtnQkFDTCxPQUFPLEtBQUssQ0FBQzthQUNkO1NBQ0Y7YUFBTTtZQUNMLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7Ozs7OztJQUdLLFdBQVcsQ0FBQyxXQUFzQjs7UUFFeEMsT0FBTyxJQUFJLEdBQUcsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFvQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxvQkFBRSxDQUFZLEVBQUMsQ0FBQyxDQUFDLENBQUM7O0NBRXBIIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgWG1sU2NoZW1hIH0gZnJvbSAnLi94bWxTY2hlbWEuY2xhc3MnO1xyXG5cclxuZXhwb3J0IGNsYXNzIFhtbFNjaGVtYUxvYWRlciB7XHJcbiAgcHVibGljIHhtbFNjaGVtYTogWG1sU2NoZW1hO1xyXG5cclxuICBwdWJsaWMgY29uc3RydWN0b3Ioc2NoZW1hQ29udGVudDogc3RyaW5nKSB7XHJcbiAgICBpZiAoIXNjaGVtYUNvbnRlbnQgfHwgc2NoZW1hQ29udGVudCA9PT0gJycpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZG9tcGFyc2VyID0gbmV3IERPTVBhcnNlcigpO1xyXG4gICAgY29uc3Qgc2NoZW1hRG9tID0gZG9tcGFyc2VyLnBhcnNlRnJvbVN0cmluZyhzY2hlbWFDb250ZW50LCAndGV4dC94bWwnKTtcclxuICAgIC8vIGNvbnN0IHJhd0VsZW1lbnRzID0gQXJyYXkuZnJvbShzY2hlbWFEb20uZG9jdW1lbnRFbGVtZW50LmNoaWxkTm9kZXMpIGFzIEVsZW1lbnRbXTtcclxuICAgIC8vIHRoaXMueG1sU2NoZW1hID0gbmV3IFhtbFNjaGVtYSh0aGlzLmdldFhzZE5vZGVzKHJhd0VsZW1lbnRzKSk7XHJcblxyXG4gICAgbGV0IHJlc3VsdDogTm9kZVtdID0gW107XHJcbiAgICBjb25zdCByYXdFbGVtZW50c0F0Um9vdCA9IEFycmF5LmZyb20oc2NoZW1hRG9tLmRvY3VtZW50RWxlbWVudC5jaGlsZE5vZGVzKSBhcyBFbGVtZW50W107XHJcbiAgICByYXdFbGVtZW50c0F0Um9vdC5mb3JFYWNoKGUgPT4ge1xyXG4gICAgICBjb25zdCBzdWJDaGlsZHMgPSB0aGlzLmdldFJhd0VsZW1lbnRzKGUpO1xyXG4gICAgICByZXN1bHQgPSByZXN1bHQuY29uY2F0KHN1YkNoaWxkcyk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMueG1sU2NoZW1hID0gbmV3IFhtbFNjaGVtYSh0aGlzLmdldFhzZE5vZGVzKHJlc3VsdCBhcyBFbGVtZW50W10pKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0UmF3RWxlbWVudHMobm9kZTogTm9kZSk6IE5vZGVbXSB7XHJcbiAgICBsZXQgcmVzdWx0OiBOb2RlW10gPSBbXTtcclxuICAgIGlmICh0aGlzLmlzVmFsaWRYc2ROb2RlKG5vZGUpKSB7XHJcbiAgICAgIHJlc3VsdCA9IHJlc3VsdC5jb25jYXQobm9kZSk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY2hpbGRyZW4gPSBBcnJheS5mcm9tKG5vZGUuY2hpbGROb2RlcykgYXMgTm9kZVtdO1xyXG4gICAgY2hpbGRyZW4uZm9yRWFjaChjaGlsZCA9PiB7XHJcbiAgICAgIHJlc3VsdCA9IHJlc3VsdC5jb25jYXQodGhpcy5nZXRSYXdFbGVtZW50cyhjaGlsZCkpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNWYWxpZFhzZE5vZGUobm9kZTogTm9kZSk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgYWxsb3dlZFhzZFR5cGVzID0gWydlbGVtZW50JywgJ2dyb3VwJywgJ2NvbXBsZXhUeXBlJ107XHJcbiAgICBjb25zdCBhc0VsZW0gPSBub2RlIGFzIEVsZW1lbnQ7XHJcblxyXG4gICAgaWYgKGFzRWxlbSkge1xyXG4gICAgICBpZiAoYWxsb3dlZFhzZFR5cGVzLmluY2x1ZGVzKGFzRWxlbS5sb2NhbE5hbWUpKSB7XHJcbiAgICAgICAgaWYgKGFzRWxlbS5hdHRyaWJ1dGVzLmdldE5hbWVkSXRlbSgnbmFtZScpKSB7XHJcbiAgICAgICAgICAvLyBjb25zb2xlLndhcm4oYXNFbGVtLmF0dHJpYnV0ZXMuZ2V0TmFtZWRJdGVtKCduYW1lJykudmFsdWUpO1xyXG4gICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFhzZE5vZGVzKHJhd0VsZW1lbnRzOiBFbGVtZW50W10pIHtcclxuICAgIC8vIGNvbnNvbGUud2FybihyYXdFbGVtZW50cy5sZW5ndGgpO1xyXG4gICAgcmV0dXJuIG5ldyBNYXAocmF3RWxlbWVudHMubWFwPFtzdHJpbmcsIEVsZW1lbnRdPihuID0+IFtuLmF0dHJpYnV0ZXMuZ2V0TmFtZWRJdGVtKCduYW1lJykudmFsdWUsIG4gYXMgRWxlbWVudF0pKTtcclxuICB9XHJcbn1cclxuIl19