def parse_xml_to_dict(xml_em: XmlElement) -> Mapping[str, object]: """ Parse XML element and return a dictionary. """ # XPath: /AEC/DocumentoAEC/Caratula caratula_em = xml_em.find('sii-dte:Caratula', namespaces=DTE_XMLNS_MAP) caratula_dict = _Caratula.parse_xml_to_dict(caratula_em) # XPath: /AEC/DocumentoAEC/Cesiones cesiones_em = xml_em.find('sii-dte:Cesiones', namespaces=DTE_XMLNS_MAP) # XPath: /AEC/DocumentoAEC/Cesiones/DTECedido dte_cedido_em = cesiones_em.find('sii-dte:DTECedido', namespaces=DTE_XMLNS_MAP) dte_cedido_dict = _DteCedido.parse_xml_to_dict(dte_cedido_em) # XPath: /AEC/DocumentoAEC/Cesiones/Cesion cesion_em_list: Sequence[XmlElement] = cesiones_em.findall( 'sii-dte:Cesion', namespaces=DTE_XMLNS_MAP, ) cesion_dict_list: Sequence[Mapping[str, object]] cesion_dict_list = [ _Cesion.parse_xml_to_dict(cesion_em) for cesion_em in cesion_em_list ] # XPath: /AEC/DocumentoAEC return dict( # id=xml_em.get('ID'), caratula=caratula_dict, cesiones_dte_cedido=dte_cedido_dict, cesiones_cesion=cesion_dict_list, )
def parse_xml_to_dict(xml_em: XmlElement) -> Mapping[str, object]: """ Parse XML element and return a dictionary. """ # XPath: /AEC/DocumentoAEC/Cesiones/DTECedido/DocumentoDTECedido doc_dte_cedido_em = xml_em.find( 'sii-dte:DocumentoDTECedido', namespaces=DTE_XMLNS_MAP, ) # Signature over 'DocumentoDTECedido' # XPath: /AEC/DocumentoAEC/Cesiones/DTECedido/Signature # signature_over_doc_dte_cedido_em = xml_em.find( # 'ds:Signature', # namespaces=xml_utils.XML_DSIG_NS_MAP, # ) # signature_over_doc_dte_cedido_dict = _XmlSignature.parse_xml_to_dict( # signature_over_doc_dte_cedido_em, # ) # XPath: /AEC/DocumentoAEC/Cesiones/DTECedido/DocumentoDTECedido doc_dte_cedido_dict = _DocumentoDteCedido.parse_xml_to_dict( doc_dte_cedido_em) # XPath: /AEC/DocumentoAEC/Cesiones/DTECedido return dict(documento_dte_cedido=doc_dte_cedido_dict, # signature=signature_over_doc_dte_cedido_dict, )
def parse_xml_to_dict(xml_em: XmlElement) -> Mapping[str, object]: """ Parse XML element and return a dictionary. """ # XPath: //Signature/KeyInfo key_info_em = xml_em.find('ds:KeyInfo', namespaces=xml_utils.XML_DSIG_NS_MAP) # XPath: //Signature/KeyInfo/X509Data key_info_x509_data_em = (key_info_em.find( 'ds:X509Data', namespaces=xml_utils.XML_DSIG_NS_MAP)) # XPath: //Signature return dict( # XPath: //Signature/SignatureValue signature_value=xml_em.findtext( 'ds:SignatureValue', namespaces=xml_utils.XML_DSIG_NS_MAP, ), # XPath: //Signature/KeyInfo/X509Data/X509Certificate key_info_x509_data_x509_cert=key_info_x509_data_em.findtext( 'ds:X509Certificate', namespaces=xml_utils.XML_DSIG_NS_MAP, ), )
def parse_xml_to_dict(xml_em: XmlElement) -> Mapping[str, object]: """ Parse XML element and return a dictionary. """ # XPath: /AEC/DocumentoAEC/Cesiones/DTECedido/DocumentoDTECedido/DTE dte_em = xml_em.find('sii-dte:DTE', namespaces=DTE_XMLNS_MAP) # XPath: /AEC/DocumentoAEC/Cesiones/DTECedido/DocumentoDTECedido return dict( # id=xml_em.get('ID'), dte=dte_em, # tmst_firma=xml_em.findtext('sii-dte:TmstFirma', namespaces=DTE_XMLNS_MAP), )
def parse_xml_to_dict(xml_em: XmlElement) -> Mapping[str, object]: """ Parse XML element and return a dictionary. """ # XPath: /AEC/DocumentoAEC/Cesiones/Cesion/DocumentoCesion/IdDTE id_dte_em = xml_em.find('sii-dte:IdDTE', namespaces=DTE_XMLNS_MAP) id_dte_dict = _IdDte.parse_xml_to_dict(id_dte_em) # XPath: /AEC/DocumentoAEC/Cesiones/Cesion/DocumentoCesion/Cedente cedente_em = xml_em.find('sii-dte:Cedente', namespaces=DTE_XMLNS_MAP) cedente_dict = _Cedente.parse_xml_to_dict(cedente_em) # XPath: /AEC/DocumentoAEC/Cesiones/Cesion/DocumentoCesion/Cesionario cesionario_em = xml_em.find('sii-dte:Cesionario', namespaces=DTE_XMLNS_MAP) cesionario_dict = _Cesionario.parse_xml_to_dict(cesionario_em) # XPath: /AEC/DocumentoAEC/Cesiones/Cesion/DocumentoCesion return dict( # id=xml_em.get('ID'), seq_cesion=xml_em.findtext('sii-dte:SeqCesion', namespaces=DTE_XMLNS_MAP), id_dte=id_dte_dict, cedente=cedente_dict, cesionario=cesionario_dict, monto_cesion=xml_em.findtext('sii-dte:MontoCesion', namespaces=DTE_XMLNS_MAP), ultimo_vencimiento=xml_em.findtext( 'sii-dte:UltimoVencimiento', namespaces=DTE_XMLNS_MAP, ), tmst_cesion=xml_em.findtext('sii-dte:TmstCesion', namespaces=DTE_XMLNS_MAP), email_deudor=xml_em.findtext('sii-dte:eMailDeudor', namespaces=DTE_XMLNS_MAP) or None, )