2010-09-17 8 views
23

Estoy buscando un analizador XML muy pequeño para un proyecto incrustado. Necesita compilar hasta 10-15k, no necesita validar y debe ser simple y portátil.¿Hay un buen analizador XML pequeño para un proyecto de C incrustado?

+2

Similar a [ C Biblioteca XML para sistemas incrustados ] (http://stackoverflow.com/questions/1131701/c-xml-library-for-embedded-systems), aunque no veo ninguna respuesta excelente . –

+1

¿XML es un requisito absoluto? 15k es bastante ajustado para algo que no se distribuye manualmente para cumplir con sus requisitos, pero me sorprendería que no pudiera encontrar un analizador JSON estándar que fuera tan pequeño. – llasram

+1

Hola, llasram, gracias por tu comentario. Sí, XML es un requisito. Al final, resolví mi problema haciendo exactamente eso: mano rodando un analizador XML que cumplía con mis requisitos. El código resultante llegó solo a un par de K ... pero, una vez más, mis requisitos de análisis XML resultaron ser bastante simples cuando los estudié de cerca. – Joe

Respuesta

5

Siempre puede implementar su propia implementación. Hice esto hace unos años, y ahora agregué un poco de documentación de interfaz al código en mercurial.intuxication.org/hg/cstuff.

Tenga en cuenta que el analizador nunca se ha utilizado en un entorno de producción o incluso se ha probado más que de manera rudimentaria; los comentarios tampoco existen, así que diviértete grafiando el código si necesitas modificarlo;)

+0

Gracias Christoph. Eso es exactamente lo que hice al final, transferir mi propia implementación. De hecho, lo implementé antes de su publicación, pero gracias de todos modos, eche un vistazo a su implementación y la comparo con la mía. – Joe

+0

@Christoph, esto parece exactamente lo que estaba buscando, ¡gracias por publicarlo! – mikepurvis

7

Pude ajustar los indicadores de compilación de las siguientes bibliotecas de analizadores XML para C y reducir más del 50% de su tamaño en mi máquina Ubuntu. Mini-XML es el único cercano a lo que solicitó:

Hay una buena discusión aquí:

C XML library for Embedded Systems

6

Estaba buscando por un poco y me encontré SimpleXML (http://simplexml.sourceforge.net/) y el sxmlc un poco más grande (http://sourceforge.net/projects/sxmlc/)

encuentro SimpleXML más interesante porque es más simple, yo no lo probé pero parece que coincide con lo que tengo en mente, una biblioteca de archivo único (bien .h y .c) que no admite características XML exóticas.

El analizador XML simple es un pequeño analizador para un subconjunto de XML (todo excepto entidades y espacios de nombres). Utiliza una interfaz simple de "un solo controlador por etiqueta" y es adecuado para su uso con dispositivos con recursos limitados.

1

He desarrollado sxmlc ("Simple XML in C") exactamente para ser así: la menor cantidad de archivos posible. Es solo un archivo, con un archivo de "búsqueda" opcional que puede agregar si necesita una búsqueda similar a XPath a través del documento.

Maneja la carga de estilo DOM (todo el árbol de documentos en la memoria) o la carga de estilo SAX (llamadas de devolución cada vez que se lee un nodo con sus atributos o se lee texto en un nodo). Si la memoria es una preocupación, te interesarán los SAX.

Algunas personas también estaban interesadas por el hecho de que puede analizar los archivos o los búferes de memoria (útil cuando obtiene XML como respuesta web).

Maneja archivos Unicode desde la versión 4 hasta #define, por lo que si no necesita Unicode, simplemente no defina el SXMLC_UNICODE y no habrá ningún aumento de peso en el binario.

También tengo que decirlo guarda comentarios al escribir de nuevo XML en el disco! Siempre me sentí mal cuando las personas dedican tiempo a explicar la sintaxis de configuración en archivos XML ("poner 'verdadero' para habilitar la compresión especial ..."), que se borran cuando la aplicación lo guarda.

Compila en Linux y Windows. Recibí buenos comentarios de personas que lo incluían felizmente en los enrutadores.

Como quiero que sea lo más simple posible, probablemente no agregue nuevas funciones sino que mejore las existentes (¡y corrija errores, por supuesto! :)). No soy muy activo en su desarrollo, a menos que se reporten errores.

4

Pruebe yxml - es un analizador no validador realmente pequeño y rápido.

Cuestiones relacionadas