Usos de python: leer XML y sumar nodos
Bienvenidos a otra semana de este blog, Python es hasta el momento el último lenguaje que he aprendido, les puedo decir que es muy sencillo de aprender es simple su lógica, sobre todo se utilizan funciones en librerías que ya existen, hay incluso varios memes que dicen el tiempo en definir qué quieres que haga el programa pero es más tiempo que tardas encontrando la librería correcta en Python.
Para aprender este lenguaje y tener un certificado, hice un curso en la plataforma de Coursera que se llama Python for everybody de la Universidad de Michigan consiste en 5 módulos, el Dr. que imparte el curso a mi gusto es el mejor maestro que he tenido Charle Severance tiene una forma muy simple de explicar las cosas complejas y da muchos ejemplos en el curso, todo está documentado en varios idiomas, inglés, francés, alemán, español, etc.., hay videos también de las clases, hay presentaciones de power point, exámenes, tareas prácticas y al finalizar cada módulo te otorgan un certificado de la universidad de Michigan con valor curricular.
También hay APPS para aprender yo utilizo una que se llama Tutorial Python 3.0, me gusta porque son sesiones breves , te ponen ejercicios, hay duelos de programación, foros y puedes ejecutar los programas desde el celular y te otorga también un certificado.
También hay APPS para aprender yo utilizo una que se llama Tutorial Python 3.0, me gusta porque son sesiones breves , te ponen ejercicios, hay duelos de programación, foros y puedes ejecutar los programas desde el celular y te otorga también un certificado.
Bueno entrando a un ejemplo como hacemos en este blog, voy a realizar un ejemplo con Python para leer un XML
Objetivo: Realizar programa que sume todos los saldos iniciales y finales por cuenta de un XML de auxiliar de cuentas de Contabilidad Electrónica del SAT
Programa:
import decimal
sumasaldofin = 0
sumasaldoin = 0
sumasaldodebe = 0
sumasaldohaber = 0
from lxml import etree
from xml.dom import pulldom
from xml.sax import make_parser
from xml.sax.handler import feature_external_ges
parser = make_parser()
xmL = pulldom.parse('C:\Users\Ana Zamora\Desktop\XAXX0101010201808XC.xml')
for event, element in xml:
if event == pulldom.START_ELEMENT and element.tagName == 'AuxiliarCtas:Cuenta' :
sumasaldofin = decimal.Decimal(element.getAttribute('SaldoFin')) + sumasaldofin
sumasaldoin = decimal.Decimal(element.getAttribute('SaldoIni')) + sumasaldoin
print ("saldo fin",sumasaldofin,"saldoini", sumasaldoin)
import decimal
sumasaldofin = 0
sumasaldoin = 0
sumasaldodebe = 0
sumasaldohaber = 0
from lxml import etree
from xml.dom import pulldom
from xml.sax import make_parser
from xml.sax.handler import feature_external_ges
parser = make_parser()
xmL = pulldom.parse('C:\Users\Ana Zamora\Desktop\XAXX0101010201808XC.xml')
for event, element in xml:
if event == pulldom.START_ELEMENT and element.tagName == 'AuxiliarCtas:Cuenta' :
sumasaldofin = decimal.Decimal(element.getAttribute('SaldoFin')) + sumasaldofin
sumasaldoin = decimal.Decimal(element.getAttribute('SaldoIni')) + sumasaldoin
print ("saldo fin",sumasaldofin,"saldoini", sumasaldoin)
Lo que hace es programa es que utilizamos las librerias lxml, xml.dom xml.sax, busca los nodos de XML AuxiliarCtas:Cuenta y los sub-nodos SaldoFin y SaldoIni,
Este programa sirve para comprobar los datos del XML vs la Balanza contable, cualquier persona me diría pues igual eso lo haces en un Excel, pero resulta que el archivo que tenia para realizar la comprobación tiene 3,481,919 líneas, pesa 507,161 KB, no se puede abrir en Excel por la cantidad de lineas, la ejecución del programa fue de 5.10 minutos
Lo que puedo decir es un programa muy sencillo de 20 lineas lo complicado en verdad fue encontrar las librerías correctas:
from lxml import etree
from xml.dom import pulldom
from xml.sax import make_parser
from xml.sax.handler import feature_external_ges
Tiene mucha funcionalidad y que es muy rápido, para temas como BigData que manejan muchísima información es una muy buena herramienta, por algo es uno de los lenguajes más populares en empresas de tecnología como Google.
No olvide compartirnos y seguirnos en este blog, en Facebook.
Otros ejemplos de Python en este post
Encontrar ubicación en google maps con Api
Leer Nodo de una lista de archivos XML
Felicidades, Excelente publicación. Funciona a la perfección
ResponderBorrar