242 votes

Quel est le meilleur analyseur XML ouvert pour C++ ?

Je suis à la recherche d'un analyseur XML simple, propre et correct à utiliser dans mon projet C++. Dois-je écrire le mien ?

119voto

jk. Points 4421

Pourquoi pas RapidXML ? RapidXML est un petit analyseur XML DOM très rapide écrit en C++. Il est principalement destiné aux environnements embarqués, aux jeux vidéo ou à toute autre application où la mémoire disponible ou la puissance de traitement de l'unité centrale est limitée. RapidXML est sous licence Boost Software License et son code source est librement disponible.

Caractéristiques

  • Vitesse d'analyse (y compris l'arbre DOM) ) se rapproche de la vitesse de la fonction fonction strlen exécutée sur les mêmes données.
  • Sur une unité centrale moderne (à partir de 2008), la fonction d'analyse est d'environ 1 milliard de caractères de caractères par seconde. Voir la section sur les performances dans le en ligne.
  • Faible empreinte mémoire du code et crée des arbres DOM.
  • Une implémentation de l'en-tête uniquement, simplifie le processus d'intégration.
  • Licence simple permettant l'utilisation pour presque tous les usages, tant commerciaux commerciales et non commerciales, sans aucune obligations.
  • Supporte l'UTF-8 et partiellement l'UTF-16, UTF-32.
  • Code source portable sans dépendances autres qu'un très petit sous-ensemble de la bibliothèque standard C++.
  • Ce sous-ensemble est si petit qu'il peut être facilement émulé manuellement si l'utilisation de la bibliothèque standard n'est pas souhaitée.

Limites

  • L'analyseur syntaxique ignore DOCTYPE .
  • Il n'y a pas de prise en charge des espaces de noms XML.
  • L'analyseur syntaxique ne vérifie pas la présence de la validité des caractères.
  • L'interface de l'analyseur n'est pas conforme à la spécification DOM.
  • L'analyseur syntaxique ne vérifie pas la présence de l'unicité de l'attribut.

Source : wikipedia.org://Rapidxml


En fonction de votre utilisation, vous pouvez utiliser un XML Data Binding ? CodeSynthesis XSD est un compilateur XML Data Binding pour C++ développé par Code Synthesis et sous licence GNU GPL et licence propriétaire. À partir d'une spécification d'instance XML (XML Schema), il génère des classes C++ qui représentent le vocabulaire donné ainsi que le code d'analyse et de sérialisation.

Une des caractéristiques uniques de CodeSynthesis XSD est son support pour deux mappings XML Schema vers C++ différents : C++/Tree en mémoire et C++/Parser orienté flux. Le mappage C++/Tree est un mappage traditionnel avec une structure de données en mémoire de type arbre. C++/Parser est un nouveau mappage de type SAX qui représente les informations stockées dans les documents d'instance XML sous la forme d'une hiérarchie d'événements d'analyse spécifiques au vocabulaire. Par rapport à C++/Tree, le mappage C++/Parser permet de traiter des documents XML volumineux qui ne tiendraient pas en mémoire, d'effectuer un traitement orienté flux ou d'utiliser une représentation en mémoire existante.

Source : wikipedia.org://CodeSynthesis XSD

99voto

Zbyl Points 718

pugixml - Analyseur XML léger, simple et rapide pour C++ Très petit (comparable à RapidXML), très rapide (comparable à RapidXML), très facile à utiliser ( meilleur (RapidXML).

41voto

Rob Points 22239

16voto

Kasprzol Points 2954

TiCPP est une version "plus c++" de TinyXML.

TiCPP" est l'abréviation du nom officiel TinyXML++. Il s'agit d'une toute nouvelle interface pour TinyXML ( http://www.grinninglizard.com/tinyxml/ ) qui utilise de nombreux points forts du C++. Les modèles, les exceptions et une bien meilleure gestion des erreurs. Il est également entièrement documenté dans doxygen. C'est vraiment cool parce que cette version vous permet d'interfacer des objets minuscules exactement de la même manière qu'avant ou vous pouvez choisir d'utiliser les nouvelles classes 'ticpp'. Tout ce que vous avez à faire est de définir TIXML_USE_TICPP. Il a été testé dans VC 6.0, VC 7.0, VC 7.1, VC 8.0, MinGW gcc 3.4.5, et dans Linux GNU gcc 3+.

14voto

Kat Points 121

Essayez celle-ci : http://www.applied-mathematics.net/tools/xmlParser.html
il est plus facile et plus rapide que RapidXML ou PUGXML.
TinyXML est le pire des "analyseurs simples".

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X