J’essaie de lire un fichier XML dans mon programme C ++. Le fichier XML ressemble à ceci:
300 500
Pour le moment, je peux regarder le fichier XML et 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 and //ignore in.ignore(200, '\n'); //ignore in.ignore(200, '\n'); //ignore in.ignore(200, '\n'); ssortingng s; int height; //okay, now i have my height in >> s >> height;
En général, cela semble être une mauvaise idée et cela limite vraiment la façon dont le fichier XML peut être modifié. La solution ci-dessus est très manuelle et si quelque chose dans XML change, il semble que la méthode de lecture entière devrait être changée.
Y a-t-il une meilleure manière de faire cela?
Vous pouvez utiliser une bibliothèque qui le fera pour vous. Si vous travaillez sur la plate-forme Windows, vous pouvez utiliser MSXML, qui fait déjà partie du système.
Cochez cette question: Read Write XML File In C ++
Autres bibliothèques populaires: xerces , tinyxml , rapidxml
boost property tree fonctionne très bien avec xml, je l’utiliserais bien.
Vous aurez besoin d’un parsingur XML. Il y a un tas là-bas:
Mon préféré est pugiXML, mais c’est une question de préférence personnelle.
Vous pouvez utiliser la bibliothèque POCO qui a des fonctions pour parsingr XML
Dans les sources multi-plateformes, j’utilise généralement le lecteur Qt XML.
Vous avez 3 façons de lire:
Si vous écrivez uniquement un logiciel Windows, vous devez utiliser MSXML 6. Étant donné que Windows XP SP3, MSXML 6.0 fait partie du système d’exploitation.
Sous Linux, vous devez utiliser libxml2 .