UNPKG

@nodecfdi/cfdi-cleaner

Version:

Librería para limpiar comprobantes fiscales digitales v3.3 y v4.0

22 lines (21 loc) 926 B
import { NAMESPACE } from '@nodecfdi/cfdi-core'; import { Mixin } from 'ts-mixer'; import XmlNamespaceMethods from '#src/mixins/xml_namespace_methods'; export default class MoveNamespaceDeclarationToRoot extends Mixin(XmlNamespaceMethods) { clean(document) { const rootElement = document.documentElement; for (const namespaceNode of this.iterateNonReservedNamespaces(document)) { this.cleanNameSpaceNode(rootElement, namespaceNode); } } cleanNameSpaceNode(rootElement, namespaceNode) { if (rootElement === namespaceNode.ownerElement) { return; } // If overlapped case if (!rootElement.hasAttribute(namespaceNode.nodeName) && namespaceNode.nodeValue) { rootElement.setAttributeNS(NAMESPACE.XMLNS, namespaceNode.nodeName, namespaceNode.nodeValue); } this.removeNamespaceNodeAttribute(namespaceNode); } }