Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





TinyXML o libxml?

Iniciado por Pogacha, 30 de Diciembre de 2006, 03:06:20 PM

« anterior - próximo »

Pogacha

Bueno, por fin me estoy mandando con el tema del xml.
Luego de estudiar el asunto un rato, veo que no tiene sentido hacer mi propio parser habiendo tanto parser suelto.
De lo que vi termino con estos dos: TinyXML y libxml.
Tengo que tener buen soporte para ASCII, UTF8 y UTF16 (de este parece que TinyXML carece).
Cual de los dos me conviene?
Saludos y gracias.

Fanakito

Pues, diria que la pregunta es ¿son muy grandes los ficheros? Porque uno usa DOM (lee todo el documento y crea la representacion en memoria) y el otro SAX (le vas pidiendo tags). Yo he usado libxml y no es especialmente engorrosa... pero si quieres hacer cosas pequeñitas yo tiraria por DOM... ya que es la mas facil de usar (a parte hay versiones mas guays, con pijaditas de C++).

Pogacha

Ya he probado con la TinyXML y me resultó muy sencillo.
Y para grabar también es facil. No se si la libxml tiene alguna funcionalidad en este aspecto.

Sobre el tamaño de las cosas no tengo idea ... deszconozco las limitaciones que pueda tener. Es para juegos, puedo tener mapas, ficheros de recursos, ficheros de traducciones y cosas así tan solo.

La pregunta nueva es: TinyXML es de juguete y para cualquier cosa seria tendria que usar la libxml?

Tampoco quiero dependencias (std o boost) y tambien tiene que ser multiplataforma (Win, Mac y Linux).
Estuve viendo que hay una libxml++ o algo así pero tiene dependencia con una libreria de strings y ya no me gusta cargar con tantas cosas. Voy a seguir revisando.

Saludos.

Zaelsius

Échale un vistazo a IrrXML. La he usado en Linux y Mac OS . Es del tipo "push", siendo bastante sencillo su uso. Usa la STL pero no creo que a día de hoy se le pueda llamar dependencia.

El único fallo que le ví fue que no me reportaba correctamente si un fichero no se había abierto.. pero se arregla añadiendo una línea de código a la librería. Ah, la claridad del código fuente es muy buena, en la línea de Irrlicht.

Pogacha

Ok, no la conocia.

La STL es una dependencia y me genera conflictos ... creo !?
No recuerdo bien todas las contras que le encontre una vez en un analisis que hice pero igual hoy la prefiero lejos de mi. Ya tengo una libreria de templates que cubre todas mis necesidades.

De todas formas en la página dice esto:
CitarIt has no external dependencies, it does not even need the STL.

La verdad es que se ve mejor que los otros dos juntos ... lo que si no me termina de cerrar es el tema del ejemplo, no encontré otros, tendria que revisar el codigo fuente que ya descargué. Despues comento en que termina todo esto.
La licencia está buena también:
CitarThe irrXML license is based on the zlib license. Basicly, this means you can do with irrXML whatever you want:


Copio los features:
CitarirrXML simply provides forward-only, read-only access to a stream of non validated XML data. Its current features are:

   * It it fast as lighting and has very low memory usage. It was developed with the intention of being used in 3D games, as it already has been.
   * irrXML is very small: It only consists of 60 KB of code and can be added easily to your existing project.
   * Of course, it is platform independent and works with lots of compilers.
   * It is able to parse ASCII, UTF-8, UTF-16 and UTF-32 text files, both in little and big endian format.
   * Independent of the input file format, the parser can return all strings in ASCII, UTF-8, UTF-16 and UTF-32 format.
   * With its optional file access abstraction it has the advantage of reading easily not only from files but from any type of data (memory, network, ...). For example when used with the Irrlicht Engine, it directly reads from compressed .zip files.
   * Just like the Irrlicht Engine for which it was originally created, it is extremely easy to use.
   * It has no external dependencies, it does not even need the STL.

Practicamente todo lo que queria menos grabar, aun que la escritura de un documento xml es muy sencilla y no le tengo miedo. Se puede implementar en un dia creo yo.

Gracias

PD: Julio, te envie un mail hace como 3 y no parece que lo hubises recibido. Te lo estoy enviando de vuelta.

Pablo Zurita

Yo uso TinyXml para todas mis aplicaciones internas porque es sumamente fácil de integrar y usar. El único problema que vas a tener para soportar UTF-8 UTF-16 y demás es que vas a tener que convertid a multibyte pero nada más.

Pogacha

Si, con TinyXML ya habia experimentado y me costo unos minutos integrarlo, pero el tema del UTF-8 a UTF-16 no era facil de sortear, tenia que wrappear todas las clases (las cuales son muchas) ya que todo mi framework se basa en ASCII/UTF16.

En realidad te recomiendo que veas el IrrXML, pues logré todo lo que quería hoy mismo.

Es un poco mas engorroso (abajo los ejemplos) y no tan seguro (pero si hay un error en un archivo XML estamos en problemas realmente).

Bueno aqui pego el codigo para que vean la diferencia que hay con los distintos parsers:

1ro con el IrrXML.
2do con el TinyXML (el que queda mas lindo y ordenado en realidad).
3ro con mi propio parser de texto.

El archivo de texto con los distintos codigos esta en el zip que menciono debajo y se llama XMLParsers.txt.

Hice un puente para el IrrXML:
(Con la misma licencia que el IrrXML)
IrrXMLBridge.h (tambien esta en el zip)

Pogacha

Ademas de esto me entretuve haciendo mi escritor de xml:
Lo comparto con la misma licencia.
Es realmente muy basico y cualquier mejora que se le haga se agradecerá.

* No tiene dependencias.
* Escribe utf8 solamente.
* Recive indistintamente ASCII/utf8 y wide char strings.
* No checkea consistencias ni errores.

Los archivos son:
XMLWriter.h
XMLWriter.cpp
Y estan dentro del zip que menciono debajo.

tamat

una cosa que me encanta de TinyXML es que son cuatro archivos de source nada más, de manera que puedes meterlos entre tu source y te ahorras linkar contra librerias externas.

Por cierto, a titulo personal, considero que pastear tal cantidad de codigo es absurdo, no creo que nadie se tome la molestia de leer todo eso.
Por un stratos menos tenso

Pogacha

Ok, puedes que tengas razón.
Todos los fuentes y archivos los pueden encontrar aca:
http://www.southwindsgames.com/archives/XMLTestAndCodes.zip

El IrrXML también solo se integra agregando 7 archivos, así que no le veo demasiada diferencia excepto la ventaja del UTf16 que con el TinyXML sería extremadamente dificil.

Saludos.






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.