jueves, 16 de mayo de 2019

Como Programar en 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, sobretodo 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 tambien 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.
Tambien 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.

Otra opción son cursos personalizados con https://debite.com.mx/ 


Bueno entrando a un ejemplo como hacemos en este blog, voy a realizar un ejemplo con Python 2.7 

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.

Espero les haya sido de utilidad este blog y nos compartan, nos leemos en el próximo post.

Entrada destacada

Como Programar en Pascal y Delphi, ejemplo calculadora en Delphi

Que tal amigos, bienvenidos a otra semana de nuestro blog, les quiero platicar acerca de un lenguaje de programación que se llama Pascal, ...