Je recherche un analyseur XML simple, propre et correct à utiliser dans mon projet C++. Dois-je écrire le mien?
Que diriez-vous de RapidXML ? RapidXML est un analyseur DOM XML très rapide et de petite taille, écrit en C++. Il est principalement destiné aux environnements intégrés, aux jeux informatiques ou à toute autre application dans laquelle la mémoire disponible ou la puissance de traitement du processeur est primordiale. RapidXML est sous licence de logiciel Boost et son code source est disponible gratuitement.
Caractéristiques
Limitations
Source: wikipedia.org://Rapidxml
Selon votre utilisation, vous pouvez utiliser une liaison de données XML? CodeSynthesis XSD est un compilateur XML Data Binding pour C++ développé par Code Synthesis et sous licence double sous le GNU GPL et une licence propriétaire. Avec 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 syntaxique et de sérialisation.
L'une des caractéristiques uniques de CodeSynthesis XSD est la prise en charge de deux mappages XML Schema vers C++ différents: C++/arborescence en mémoire et C++/analyseur orienté flux. Le mappage C++/Tree est un mappage traditionnel avec une structure de données en mémoire en forme d'arborescence. 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 propres au vocabulaire. En comparaison avec C++/Tree, le mappage C++/Parser permet de gérer des documents XML volumineux qui ne tiendraient pas dans la mémoire, d'effectuer un traitement orienté flux ou d'utiliser une représentation en mémoire existante.
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 que RapidXML).
Essayez TinyXML.
TiCPP est une version "plus c ++" de TinyXML.
'TiCPP' est l'abréviation du nom officiel TinyXML ++. C'est une interface complètement nouvelle pour TinyXML ( http://www.grinninglizard.com/tinyxml/ ) qui utilise BEAUCOUP des atouts C++. Modèles, exceptions et meilleure gestion des erreurs. Il est également entièrement documenté dans doxygen. C’est vraiment bien parce que cette version vous permet d’interfacer très exactement comme 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 sous Linux. GNU gcc 3+
essayez celui-ci: http://www.applied-mathematics.net/tools/xmlParser.html
C’est plus facile et plus rapide que RapidXML ou PUGXML.
TinyXML est le pire des "analyseurs simples".
N'utilisez pas TinyXML si vous êtes préoccupé par l'efficacité/la gestion de la mémoire (il a tendance à allouer beaucoup de petits blocs). Mon préféré est RapidXML .
Que diriez-vous de gSOAP ? Il est open source et disponible gratuitement sous licence GPL. Malgré son nom, la boîte à outils gSOAP est un outil de liaison de données XML générique qui vous permet de lier automatiquement vos données C et C++ à XML. Il n’est pas nécessaire d’utiliser une API d’analyseur XML, laissez-le simplement lire/écrire vos données au format XML pour vous. Si vous avez vraiment besoin d'un analyseur XML C++ ultra-simple, alors gSOAP est peut-être un peu excessif. Mais pour tout le reste, cela a bien fonctionné, comme en témoignent les témoignages relatifs à de nombreuses applications industrielles depuis l’introduction de gSOAP en 2001.
Voici une brève liste de fonctionnalités:
Par exemple:
class Address
{
std::string name;
std::vector<LONG64> number;
time_t date;
};
Ensuite, exécutez "soapcpp2" sur la déclaration de classe Address
ci-dessus pour générer le lecteur et le graveur soap_read_Address
et soap_write_Address
XML, par exemple:
Address *a = new Address();
a = ...;
soap ctx = soap_new();
soap_write_Address(ctx, a);
soap_end(ctx);
soap_free(ctx);`
Ceci produit une représentation XML de l'objet Address a
. En annotant les déclarations de fichier d'en-tête avec les détails de l'espace de noms XML (non représentés ici), les outils génèrent également des schémas. Ceci est un exemple simple. Les outils gSOAP peuvent gérer une très large gamme de types de données C et C++, y compris des structures liées basées sur un pointeur et des graphes même (cycliques) (plutôt que de simples arbres).
J'espère que cela t'aides.
Je suis un débutant en C++ et après avoir essayé quelques suggestions différentes sur cette page, je dois dire que j'aime pugixml le plus. Il comprend une documentation facile à comprendre et une API de haut niveau, ce qui était tout ce que je cherchais.
TinyXML peut être préférable pour un travail XML simple, mais si vous avez besoin de plus de fonctionnalités, essayez Xerces à partir du projet Apache. Allez à la page suivante pour en savoir plus sur ses fonctionnalités.
TinyXML, et aussi Boost.PropertyTree. Ce dernier ne remplit pas toutes les exigences officielles, mais est très simple.
J'aime l'analyseur Gnome xml. Il est open source (licence MIT, vous pouvez donc l’utiliser dans des produits commerciaux), rapide et dispose d’interfaces basées sur DOM et SAX.