programación - Biblioteca XML C para sistemas embebidos
programacion msp430 (7)
He escrito sxmlc para que sea lo más simple posible y sé que la gente lo usa en enrutadores para realizar un análisis in situ de las consultas web.
Desafortunadamente (y tengo 5 años de retraso ...) usa la asignación de memoria, aunque se mantiene en un mínimo: un búfer para leer cada "línea XML" (lo que se encuentra entre <
y >
, lo siento;)), y muchos pequeños búfer para realizar un seguimiento del nombre de la etiqueta, los nombres y valores de los atributos y el texto (aunque siempre quise usar char[16]
o más para esos).
Y hace uso de strdup
/ strcpy
y tal.
Como quiero que cualquiera pueda usarlo libremente, la licencia es BSD.
Estoy trabajando en un proyecto para un sistema integrado que utiliza XML para ingresar y salir datos del sistema. No quiero que el manejo de XML se convierta en un montón de bits que construyan cadenas XML utilizando snprintf()
/ strcat()
y amigos o analicen XML contando los caracteres " <
" y " >
".
He encontrado varias bibliotecas XML, algunas de las cuales incluso pueden ser lo suficientemente pequeñas, pero lo más cerca que están de C es C ++, que no está en las tarjetas de este sistema. Espero poder encontrar una biblioteca XML que cumpla con las siguientes restricciones:
- Código fuente C
- sin asignación de memoria dinámica
- barato. Gratis es mejor, pero el copyleft no hará el truco.
No tiene que ser un analizador completo, solo quiero poder extraer texto de elementos anidados y tener una forma razonablemente sencilla de generar XML que no se base en cadenas de formato. Los atributos no se están utilizando (todavía), por lo que la biblioteca no tiene que admitirlos ni siquiera. Los documentos XML serán bastante pequeños, por lo que algo parecido a DOM estaría bien, siempre y cuando funcione con búferes proporcionados por el cliente (sería bueno analizar el XML sin procesar en el lugar).
PugXML y TinyXML parecen estar muy cerca, pero espero que alguien sepa acerca de una biblioteca XML adaptada solo para sistemas integrados basados en C que falta en Google.
La biblioteca Xerces-C sería óptima de usar, en este escenario.
No estoy seguro, pero quizás Mini-XML: Lightweight XML Library te ayudará a:
- Mini-XML solo requiere un compilador compatible con ANSI C.
- Es freeware.
- Su tamaño binario es de alrededor de 100k.
- Analiza todo el archivo xml y luego almacena toda la información en una lista vinculada.
No sé acerca de la asignación de memoria dinámica, pero un analizador XML estándar de C es expat , que es la biblioteca subyacente para una serie de analizadores.
Podrías usar un codificador ASN.1 XER; hay uno gratuito en http://lionet.info/asn1c/
Si va a ser un XML bastante pequeño, ¿por qué no generarlo programáticamente, usar sprintf u otras cosas y usar las funciones de extracción de cadenas para analizar lo mismo? Pero como se mencionó anteriormente, si es poco grande, sugeriría usar la Biblioteca Xerces-c, ya que es de código abierto