XML vs JSON

Chema Cortes pych3m4 en gmail.com
Mar Jun 26 19:51:25 CEST 2007


El 23/06/07, Ezequiel Foncubierta <efoncu en agali.org> escribió:

> En realidad, este hilo no consiste en poner XML en las cuerdas contra
> JSON. El título puede ser tomado a modo orientativo.
>
> El caso es que en mi empresa estoy desarrollando una aplicación, en
> Python claro, para manejar un gran volumen de datos, como pueden ser los
> logs de Apache en un sistema en producción. El caso es que una vez
> procesada toda la información y extraido los resultados estadísticos, y
> por tanto la información que quiero plasmar en un report, mi objetivo es
> crearme un documento XML con la información generada por cada uno de los
> módulos (Ya que la información generada viene de varias fuentes de
> datos). El caso es si utilizar JSON para crearme un documento,
> lógicamente, con el formato de JSON o decantarme por el XML.

Faltaría saber para qué vas a usar estos formatos. Normalmente, se
buscan estos formatos para la "serialización" de objetos con el fin de
combinarlos en un único flujo de datos.

El formato JSON es simple, tanto como es el javascript a quien está
orientado principalmente. Básicamente, lo dejaría sólo para páginas
web dinámicas (aka ajax), o sea, un formato para la capa de
"visualización", pero no lo emplearía en el almacenaje de información
(auque puede que sea justo lo que estabas buscando).

El XML (junto con DTD o similar) se puede definir casi cualquier cosa,
por lo que se emplea para definir cómo tiene que ser la entrada de
datos en labores de consolidación de información (éso parece que haces
con los logs traídos de varios sitios). Existen varias librerías que
simplifican mucho su uso como, por ejemplo, Amara. El problema que
tiene es que no es muy legible, por lo que no parece el formato ideal
para almacenar ficheros logs. Lo que sí que te diría es que intentes
cambiar el procesado por SAX.

> ¿Alguna sugerencia sobre el uso de JSON o seguir usando XML?.

Como sugerencia te diría que pruebes el YAML. Similar a XML en
características, su estilo de escritura es pythónico (o sea, es
legible). Está orientado a serialización de objetos en flujos de
datos, contando con un nutrido grupo de tipos de datos que puede ser
ampliado mediante código. Por ejemplo, las fechas/horas de tus logs se
definen como tipo "datetime" en yaml, sin lugar a dudas sobre su
interpretación. La conversión posterior a XML es directa, con leves
matices debidos a ser un formato orientado a flujos de datos y no a la
creación de ficheros (en concreto, el fin de fichero EOF no finaliza
un flujo necesariamente).


http://yaml.org
http://pyyaml.org/wiki/PyYAML




Más información sobre la lista de distribución Python-es