c++ xml open-source

c++ - rapidxml



¿Cuál es el mejor analizador XML abierto para C++? (12)

¿Qué tal RapidXML ? RapidXML es un analizador XML DOM muy rápido y pequeño escrito en C ++. Está dirigido principalmente a entornos integrados, juegos de computadora o cualquier otra aplicación en la que la memoria disponible o el poder de procesamiento de la CPU sea primordial. RapidXML está licenciado bajo la licencia de software Boost y su código fuente está disponible gratuitamente.

Caracteristicas

  • La velocidad de análisis (incluida la construcción de árbol DOM) se acerca a la velocidad de la función strlen ejecutada en los mismos datos.
  • En una CPU moderna (a partir de 2008) el rendimiento del analizador es de aproximadamente 1.000 millones de caracteres por segundo. Consulte la sección Rendimiento en el Manual en línea.
  • Pequeña huella de memoria del código y árboles DOM creados.
  • Una implementación solo para encabezados, simplificando el proceso de integración.
  • Licencia simple que permite su uso para casi cualquier propósito, tanto comercial como no comercial, sin ninguna obligación.
  • Admite las codificaciones UTF-8 y parcialmente UTF-16, UTF-32.
  • Código fuente portátil sin dependencias que no sea un subconjunto muy pequeño de la biblioteca estándar de C ++.
  • Este subconjunto es tan pequeño que puede ser fácilmente emulado manualmente si no se desea el uso de una biblioteca estándar.

Limitaciones

  • El analizador ignora las declaraciones DOCTYPE.
  • No hay soporte para espacios de nombres XML.
  • El analizador no comprueba la validez de los caracteres.
  • La interfaz del analizador no se ajusta a la especificación DOM.
  • El analizador no comprueba la singularidad del atributo.

Fuente: wikipedia.org://Rapidxml

Dependiendo de su uso, puede usar un enlace de datos XML? CodeSynthesis XSD es un compilador de enlace de datos XML para C ++ desarrollado por Code Synthesis y con doble licencia bajo la GPL de GNU y una licencia propietaria. Dada una especificación de instancia XML (esquema XML), genera clases de C ++ que representan el vocabulario dado, así como el código de análisis y serialización.

Una de las características únicas de CodeSynthesis XSD es su compatibilidad con dos asignaciones diferentes de Esquema XML a C ++: C ++ / Tree en memoria y C ++ / Parser orientado a flujo. La asignación de C ++ / Árbol es una asignación tradicional con una estructura de datos en memoria, similar a un árbol. C ++ / Parser es una nueva asignación de tipo SAX que representa la información almacenada en documentos de instancia XML como una jerarquía de eventos de análisis de vocabulario específico. En comparación con C ++ / Tree, la asignación de C ++ / Parser permite manejar grandes documentos XML que no caben en la memoria, realizar un procesamiento orientado a la secuencia o usar una representación existente en la memoria.

Fuente: wikipedia.org://CodeSynthesis XSD

Esta pregunta ya tiene una respuesta aquí:

Estoy buscando un analizador XML simple, limpio y correcto para usar en mi proyecto C ++. ¿Debo escribir mi propia?


¿Qué tal gSOAP ? Es de código abierto y está disponible gratuitamente bajo la licencia GPL. A pesar de su nombre, el kit de herramientas gSOAP es una herramienta genérica de enlace de datos XML y le permite enlazar sus datos C y C ++ a XML automáticamente. No es necesario utilizar una API de analizador XML, solo deje que lea / escriba sus datos en formato XML para usted. Si realmente necesita un analizador XML C ++ súper simple, gSOAP puede ser una exageración. Pero para todo lo demás, ha funcionado bien como muestran los testimonios de muchas aplicaciones industriales desde que se introdujo gSOAP en 2001.

Aquí hay una breve lista de características:

  • Portátil: Windows, Linux, Mac OS X, Unix, VxWorks, Symbian, Palm OS, WinCE, etc.
  • Tamaño reducido: código de 73KB y menos de 2K de datos para implementar una aplicación cliente de servicio web XML (sin DOM para limitar el uso de la memoria).
  • Rápido: no crea lo que dicen otras herramientas, la velocidad real debe medirse con E / S. Para gSOAP hay más de 3000 mensajes XML de ida y vuelta a través de TCP / IP. La sobrecarga de análisis de XML es despreciable ya que es un simple escaneo lineal de la entrada / salida mientras se realiza (des) la serialización.
  • Compatibilidad con XML: importación / exportación de esquemas XML (XSD), importación / exportación WSDL, espacios de nombres XML, canonización XML, XML con adjuntos (MIME), uso opcional de DOM, muchas opciones para producir XML con sangría, usar cadenas UTF8, etc.
  • Validación de XML: parcial y completo (opción)
  • Soporte de WS: WS-Security, WS-ReliableMessaging, WS-Addressing, WS-Policy, WS-SecurityPolicy y otros.
  • Depuración: gestión de memoria integrada con detección de fugas, registro.
  • API: no hay API que aprender, solo inicialización del contexto del motor "en jabón", luego use la interfaz de lectura / escritura para sus datos y la destrucción del contexto del motor en "jabón".

Por ejemplo:

class Address { std::string name; std::vector<LONG64> number; time_t date; };

Luego ejecute "soapcpp2" en la declaración de clase de Address anterior para generar el lector y escritor XML soap_read_Address y soap_write_Address , por ejemplo:

Address *a = new Address(); a = ...; soap ctx = soap_new(); soap_write_Address(ctx, a); soap_end(ctx); soap_free(ctx);`

Esto produce una representación XML de la Address a objeto. Al anotar las declaraciones del archivo de encabezado con los detalles del espacio de nombres XML (no se muestra aquí), las herramientas también generan esquemas. Este es un ejemplo simple. Las herramientas gSOAP pueden manejar una gama muy amplia de tipos de datos C y C ++, incluidas estructuras vinculadas basadas en punteros e incluso gráficos (cíclicos) (en lugar de solo árboles).

Espero que esto ayude.


Me gusta el analizador xml Gnome. Es de código abierto (licencia MIT, para que pueda usarlo en productos comerciales), rápido y tiene interfaces basadas en DOM y SAX.

http://xmlsoft.org/




Soy un novato en C ++ y después de probar un par de sugerencias diferentes en esta página, debo decir que me gusta más el pugixml . Tiene una documentación fácil de entender y una API de alto nivel que era todo lo que estaba buscando.


TinyXML puede ser mejor para trabajos XML simples, pero si necesita más funciones, intente Xerces desde el proyecto apache. Vaya a la página siguiente para leer más sobre sus características.

http://xerces.apache.org/xerces-c/


TinyXML, y también Boost.PropertyTree. Este último no cumple con todos los requisitos oficiales, pero es muy sencillo.


TiCPP es una versión "más c ++" de TinyXML.

''TiCPP'' es la abreviatura del nombre oficial TinyXML ++. Es una interfaz completamente nueva para TinyXML ( http://www.grinninglizard.com/tinyxml/ ) que usa MUCHOS de los puntos fuertes de C ++. Plantillas, excepciones, y mucho mejor manejo de errores. También está completamente documentado en doxygen. Es realmente genial porque esta versión te permite interactuar de la misma manera que antes o puedes elegir usar las nuevas clases ''ticpp''. Todo lo que necesitas hacer es definir TIXML_USE_TICPP. Se ha probado en VC 6.0, VC 7.0, VC 7.1, VC 8.0, MinGW gcc 3.4.5 y en Linux GNU gcc 3+


pugixml : analizador de XML ligero, simple y rápido para C ++ Muy pequeño (comparable a RapidXML), muy rápido (comparable a RapidXML), muy fácil de usar ( mejor que RapidXML).


No use TinyXML si está preocupado por la administración de eficiencia / memoria (tiende a asignar muchos bloques pequeños). Mi favorito personal es RapidXML .