FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Como leer nodo de archivo xml con Python usando minidom
tengo u archivo xml con la siguiente estructura:
<?xml version="1.0" encoding="UTF-8"?><cfdi:Comprobante Version="3.3" xmlns:cfdi="http://www.sat.gob.mx/cfd/3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sat.gob.mx/cfd/3 http://www.sat.gob.mx/sitio_internet/cfd/3/cfdv33.xsd " Serie="KNS" Folio="44" Fecha="2018-02-01T09:19:56" NoCertificado="00001000000407880000" Certificado="MIIGMzCCBBug...."" Moneda="MXN" TipoDeComprobante="I" MetodoPago="PUE" FormaPago="99" CondicionesDePago="Contado" SubTotal="540.00" Total="626.40" LugarExpedicion="11320" Sello="JKVJ""><cfdi:Emisor Rfc="GKM060127GP4" Nombre="GRUPO KROME DE MEXICO, SA DE CV" RegimenFiscal="601"/> <cfdi:Receptor Rfc="IBS000800000" Nombre="IB Sistemas, S.A. de C.V." UsoCFDI="G03"/> <cfdi:Conceptos><cfdi:Concepto ClaveProdServ="82101500" Cantidad="2.00" ClaveUnidad="HC" Descripcion="Tarjetas de presentación, impresas en offset digital." ValorUnitario="270.00" Importe="540.00"><cfdi:Impuestos><cfdi:Traslados><cfdi:Traslado Base="540.00" Impuesto="002" TipoFactor="Tasa" TasaOCuota="0.160000" Importe="86.40"/></cfdi:Traslados></cfdi:Impuestos></cfdi:Concepto></cfdi:Conceptos><cfdi:Impuestos TotalImpuestosTrasladados="86.40"> <cfdi:Traslados><cfdi:Traslado Impuesto="002" TipoFactor="Tasa" TasaOCuota="0.160000" Importe="86.40"/></cfdi:Traslados> </cfdi:Impuestos><cfdi:Complemento><tfd:TimbreFiscalDigital xmlns:tfd="http://www.sat.gob.mx/TimbreFiscalDigital" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sat.gob.mx/TimbreFiscalDigital http://www.sat.gob.mx/sitio_internet/cfd/TimbreFiscalDigital/TimbreFiscalDigitalv11.xsd" Version="1.1" UUID="5CA56521-0763-11E8-87CC-00155D014007" FechaTimbrado="2018-02-01T09:19:57" RfcProvCertif="TBN040609RKA" SelloCFD="JKVJ"" NoCertificadoSAT="00001000000403557578" SelloSAT="jXmC54X9fW""/></cfdi:Complemento></cfdi:Comprobante> Del cual quiero obtener el valor "totalImpuestosTrasladados" pero no lo he logrado. Usando "getElementsByTagName" he logrado obtener la mayoría de los campos pero no lo he logrado con este. Agradeceré cualquier ayuda Gracias y saludos
__________________
Alejandro Jourdan |
#2
|
|||
|
|||
Sólo uno de los nodos de cfdi:Impuestos contiene el atributo TotalImpuestosTrasladados
esto bastaría para encontrar cual de ellos tiene el atributo. Código:
for node in dom.getElementsByTagName("cfdi:Impuestos"): print node.getAttribute("TotalImpuestosTrasladados") Código:
from xml.dom.minidom import parse, parseString from lxml import etree as ET dom = parse("cfdi.xml") print("-------------------------") for node in dom.getElementsByTagName("cfdi:Impuestos"): print(node.getAttribute("TotalImpuestosTrasladados")) #Con lxml.etree d = ET.parse("cfdi.xml") ns = {"cfdi":"h t t p : / / www . sat.gob.mx / cfd / 3"} print("-------------------------") #--------------------------- node = d.findall("//{h t t p : / / www . sat.gob.mx / cfd / 3}Impuestos/[@TotalImpuestosTrasladados]")[0] for key,val in node.items(): print(key,val) print(node.xpath("@TotalImpuestosTrasladados")[0]) #--------------------------- print("--------------------------") node = d.findall("//cfdi:Impuestos/[@TotalImpuestosTrasladados]",ns)[0] for key,val in node.items(): print(key,val) print(node.xpath("@TotalImpuestosTrasladados")[0]) #--------------------------- print("----------------------------") E = ET.XPathEvaluator(d,namespaces=ns) print(E("//cfdi:Impuestos/@TotalImpuestosTrasladados")[0]) De ejemplo use uno de los XML que vienen en la página del SAT y el resultado es el siguiente. Código:
------------------------- 363104 ------------------------- ('TotalImpuestosRetenidos', '1196492') ('TotalImpuestosTrasladados', '363104') 363104 -------------------------- ('TotalImpuestosRetenidos', '1196492') ('TotalImpuestosTrasladados', '363104') 363104 ---------------------------- 363104 |
#3
|
|||
|
|||
Muchisimas gracias, me pongo a hacer pruebas en este momento!
Saludos
__________________
Alejandro Jourdan |
#4
|
|||
|
|||
Me funciono muy bien!
Muchismas gracias
__________________
Alejandro Jourdan |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
leer nodo tfd de un cfdi xml | jourdan | Varios | 18 | 28-08-2018 23:04:12 |
¿ Como leer un archivo INI externo ? | etamburelli | Varios | 12 | 01-11-2016 22:19:57 |
C++Builder 6 CFDI Mexico ¿Como agregar nodo dentro de otro nodo como hijo? | JXJ | C++ Builder | 0 | 10-03-2016 04:51:01 |
como abrir un archivo .hlp desde mi aplicacion usando un menu | federiconqn21 | Varios | 2 | 20-05-2008 13:02:37 |
como leer n caracteres de un archivo | manolop | Varios | 6 | 18-12-2007 23:50:06 |
|