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")
Aunque con lxml.etree y algo de xpath podrías hacer lo mismos.
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])
Sólo elimina los espacios en h t t p : / / www . sat.gob.mx / cfd / 3 y debe de funcionar.
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