la lecture d'un fichier XML dans un programme C++
J'essaie de lire un fichier XML dans mon programme en C++. Le fichier XML ressemble à quelque chose comme ceci:
<?xml version="1.0" encoding="utf-8"?>
<myprogram>
<configuration>
<window>
<height> 300 </height>
<width> 500 </width>
</window>
</configuration>
</myprogram>
Maintenant je peux regarder le fichier XML et d'essayer de le lire comme ceci:
ifstream in("mydata.xml");
//ignore the <?xml line
in.ignore(200, '\n');
//i know that the first value i want is the window height so i can ignore <myprogram> <configuration> and <window>
//ignore <myprogram>
in.ignore(200, '\n');
//ignore <configuration>
in.ignore(200, '\n');
//ignore <window>
in.ignore(200, '\n');
string s; int height;
//okay, now i have my height
in >> s >> height;
En général, cela semble une mauvaise idée et c'est vraiment limite la façon dont le fichier XML peut être modifié. La solution ci-dessus est très manuel et si quoi que ce soit dans le XML changements, il semble que l'ensemble de la méthode de lecture, il doit être changé.
Est-il une meilleure façon de le faire?
Je havn'pas utilisé le c++ dans les années donc je ne peux pas le nom mais google un analyseur xml en c++ et je suis sûr que vous trouverez quelque chose.
OriginalL'auteur user974967 | 2012-02-27
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser une bibliothèque qui va le faire pour vous. Si vous travaillez sur une plate-forme Windows, vous pouvez utiliser MSXML qui fait partie du système.
Cochez cette question: Lecture /Écriture de Fichier XML En C++
Autres bibliothèques populaires: xerces, tinyxml, rapidxml
Vote pour RapidXml parce que c'est un en-tête de la seule bibliothèque avec plus de dépendances.
OriginalL'auteur LihO
Vous aurez besoin d'un Analyseur XML. Il y a un tas:
Mon favori personnel est pugiXML mais c'est une question de préférence personnelle.
OriginalL'auteur pmr
Vous pouvez utiliser POCO bibliothèque qui dispose de fonctions pour le traitement XML
OriginalL'auteur Roman Smelyansky
boost propriété de l'arbre fonctionne très bien avec le xml, je voudrais l'utiliser.
en effet, tout dépend de ce que les bibliothèques de personnes utilisent déjà et s'ils ont besoin de la croix-compatibilité de plate-forme
OriginalL'auteur 01100110
Dans la plate-forme multi-source j'ai l'habitude de l'utilisation de Qt lecteur XML.
Vous avez 3 façons de lire:
Si vous écrivez uniquement Windows logiciel, vous devez utiliser MSXML 6. Depuis Windows XP SP3 MSXML 6.0 fait partie de l'OS.
Sur Linux, vous devez utiliser libxml2.
pourquoi pas? Dans de nombreux cas pur bibliothèques C est plus rapide. libxml2 est couramment utilisé et qu'il est généralement sur la machine, de sorte qu'il ne donne pas plus de dépendance.
Dans mon expérience, C des bibliothèques souvent de me sentir bizarre dans idiomatiques C++ et exigent une certaine quantité de l'emballage et de ne pas intégrer trop bien avec d'autres codes et les plus grandes bases de code. Mais c'est sans doute très subjectif.
sur Linux, beaucoup de C++ xml lecteur basé sur libxml2 (par exemple: VTK's de l'analyseur). Si vous cochez la case cet exemple, vous trouverez que cette bibliothèque C n'est pas de codage de l'enfer. Mais fondamentalement d'accord, donc j'ai l'habitude de l'utilisation de Qt mode de l'analyse.
OriginalL'auteur Naszta