Je cherche un parsingur XML simple, propre et correct à utiliser dans mon projet C ++. Devrais-je écrire le mien?
Qu’en est-il de RapidXML ? RapidXML est un parsingur XML DOM rapide et petit écrit en C ++. Il est principalement destiné aux environnements embarqués, aux jeux sur ordinateur ou à toute autre application où la mémoire disponible ou la puissance de traitement du processeur est très élevée. RapidXML est sous licence Boost Software License et son code source est librement disponible.
Caractéristiques
Limites
Source: wikipedia.org://Rapidxml
Selon votre utilisation, vous pouvez utiliser une liaison de données XML? CodeSynthesis XSD est un compilateur de liaison de données XML pour C ++ développé par Code Synthesis et doté d’ une double licence sous GNU GPL et d’une licence propriétaire. Étant donné une spécification d’instance XML (schéma XML), il génère des classes C ++ qui représentent le vocabulaire donné, ainsi que le code d’parsing et de sérialisation.
L’une des caractéristiques uniques de CodeSynthesis XSD est sa prise en charge de deux mappages XML Schema vers C ++ différents: C ++ / Tree en mémoire et C ++ / Parser orienté stream. Le mappage C ++ / Tree est un mappage traditionnel avec une structure de données en mémoire arborescente. 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’parsing de vocabulaire spécifiques. En comparaison avec C ++ / Tree, le mappage C ++ / Parser permet de gérer des documents XML volumineux qui ne rentrent pas dans la mémoire, d’effectuer un traitement orienté stream ou d’utiliser une représentation en mémoire existante.
Source: wikipedia.org://CodeSynthesis XSD
pugixml – Analyseur XML léger, simple et rapide pour C ++ Très petit (comparable à RapidXML), très rapide (comparable à RapidXML), très facile à utiliser ( mieux que RapidXML).
Essayez TinyXML.
TiCPP est une version “plus c ++” de TinyXML.
‘TiCPP’ est l’abréviation du nom officiel TinyXML ++. C’est une toute nouvelle interface pour TinyXML ( http://www.grinninglizard.com/tinyxml/ ) qui utilise BEAUCOUP de points forts du C ++. Modèles, exceptions et beaucoup mieux gérer les erreurs. Il est également entièrement documenté dans doxygen. C’est vraiment cool parce que cette version vous permet de faire une interface minuscule exactement de la même manière qu’auparavant ou vous pouvez choisir d’utiliser les nouvelles classes ‘ticpp’. Tout ce que vous devez 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+
essayez celui-ci: http://www.applied-mathematics.net/tools/xmlParser.html
c’est plus simple et rapide que RapidXML ou PUGXML.
TinyXML est le pire de “l’parsingur simple”.
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, le toolkit gSOAP est un outil de liaison de données XML générique et vous permet de lier automatiquement vos données C et C ++ à XML. Il n’est pas nécessaire d’utiliser une API d’parsing XML, laissez-le simplement lire / écrire vos données au format XML pour vous. Si vous avez vraiment besoin d’un parsingur XML C ++ super simple, alors gSOAP peut être excessif. Mais pour tout le rest, cela a bien fonctionné, comme en témoignent de nombreuses applications indussortingelles depuis l’introduction de gSOAP en 2001.
Voici une brève liste de fonctionnalités:
Par exemple:
class Address { std::ssortingng name; std::vector number; time_t date; };
Exécutez ensuite “soapcpp2” sur la déclaration de la classe Address
ci-dessus pour générer le soap_read_Address
et le soap_write_Address
XML soap_read_Address
et soap_write_Address
, par exemple:
Address *a = new Address(); a = ...; soap ctx = soap_new(); soap_write_Address(ctx, a); soap_end(ctx); soap_free(ctx);`
Cela produit une représentation XML de l’ Address a
object. En annotant les déclarations du 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 un très large éventail de types de données C et C ++, y compris des structures liées basées sur des pointeurs et même des graphiques (cycliques) (plutôt que des arbres).
J’espère que cela t’aides.
TinyXML peut être le meilleur pour le 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.
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 le plus le pugixml . Il est facile de comprendre la documentation et une API de haut niveau, tout ce que je cherchais.
TinyXML, et aussi Boost.PropertyTree. Ce dernier ne répond pas à toutes les exigences officielles, mais est très simple.
J’aime l’parsingur XML Gnome. C’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.
Essayez TinyXML ou IrrXML … Les deux sont des parsingurs XML légers (je vous suggère d’utiliser TinyXML, de toute façon).