Skip to content

Instantly share code, notes, and snippets.

@moylop260
Last active July 29, 2020 02:41
Show Gist options
  • Save moylop260/edcb84fe3865b1573c997047a0fcaa04 to your computer and use it in GitHub Desktop.
Save moylop260/edcb84fe3865b1573c997047a0fcaa04 to your computer and use it in GitHub Desktop.
from lxml import objectify
xml = objectify.fromstring("""<?xml version="1.0" encoding="utf-8"?>
<cfdi:Comprobante
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:cfdi="http://www.sat.gob.mx/cfd/3"
xsi:schemaLocation="http://www.sat.gob.mx/cfd/3 http://www.sat.gob.mx/sitio_internet/cfd/3/cfdv32.xsd"
xmlns:tfd="http://www.sat.gob.mx/TimbreFiscalDigital"
>
<cfdi:Emisor rfc="XYZU8801017YA" nombre="MOYLOP260">
<cfdi:DomicilioFiscal calle="Calle value"/>
<cfdi:RegimenFiscal Regimen="Regimen value" />
</cfdi:Emisor>
<cfdi:Complemento xmlns:tfd="http://www.sat.gob.mx/TimbreFiscalDigital">
<tfd:TimbreFiscalDigital
xsi:schemaLocation="http://www.sat.gob.mx/TimbreFiscalDigital http://www.sat.gob.mx/TimbreFiscalDigital/TimbreFiscalDigital.xsd"
xmlns:tfd="http://www.sat.gob.mx/TimbreFiscalDigital"
version="1.0" UUID="UUID value"/>
</cfdi:Complemento>
</cfdi:Comprobante>""")
print "xml.Emisor.DomicilioFiscal.get('calle'):", xml.Emisor.DomicilioFiscal.get('calle')
print "xml.Emisor.RegimenFiscal.get('Regimen'):", xml.Emisor.RegimenFiscal.get('Regimen')
tfd = xml.Complemento.xpath('tfd:TimbreFiscalDigital[1]',
namespaces={'tfd': 'http://www.sat.gob.mx/TimbreFiscalDigital'})
print "tfd[0].get('UUID'):", tfd[0].get('UUID')
tfd = xml.Complemento.xpath('tfd:TimbreFiscalDigital[1]', namespaces=xml.nsmap)
print "tfd[0].get('UUID'):", tfd[0].get('UUID')
print "uuid with 100%% xpath", xml.Complemento.xpath('tfd:TimbreFiscalDigital[1]/@UUID', namespaces=xml.nsmap)
print "uuid with 100%% xpath not list", (xml.Complemento.xpath('tfd:TimbreFiscalDigital[1]/@UUID', namespaces=xml.nsmap) + [0])[0]
# print "dir(xml.Complemento)", [attr for attr in dir(xml.Complemento) if not attr.startswith('_')]
try:
print "xml.Complemento.TimbreFiscalDigital: ", xml.Complemento.TimbreFiscalDigital
except AttributeError:
print "Why I have a AttributeError here?"
tfd2 = objectify.fromstring("""<?xml version="1.0" encoding="utf-8"?>
<tfd:TimbreFiscalDigital
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.sat.gob.mx/TimbreFiscalDigital http://www.sat.gob.mx/TimbreFiscalDigital/TimbreFiscalDigital.xsd"
xmlns:tfd="http://www.sat.gob.mx/TimbreFiscalDigital"
version="1.0" UUID="UUID value"/>""")
print "tfd2.get('UUID'):", tfd[0].get('UUID')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment