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.



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)

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.

Ejecución del programa:
Aquí vemos la pantalla del resultado mostrando el valor de total.


No olvide compartirnos y seguirnos en este blog, en Facebook.

Otros ejemplos de Python en este post

Como hacer gráficas en Python

Ordenamiento burbuja

Ciclos en programación

Encontrar ubicación en google maps con Api
Leer Nodo de una lista de archivos XML

Comentarios

  1. Felicidades, Excelente publicación. Funciona a la perfección

    ResponderBorrar

Publicar un comentario

Entradas más populares de este blog

Ejemplo Macro en Word

Macro de Excel para abrir archivo csv

Como ejecutar SQL desde Tareas Programadas de Windows