C++

Comment analyser XML en C++

Comment analyser XML en C++

Dans cet article, nous allons discuter de la façon d'analyser XML dans le langage de programmation C++. Nous verrons plusieurs exemples de travail pour comprendre le mécanisme d'analyse XML en C++.

Qu'est-ce que XML?

XML est un langage de balisage et est principalement utilisé pour stocker et transférer des données de manière organisée. XML signifie eXtensible Markup Language. C'est très similaire au HTML. Le XML est entièrement axé sur le stockage et le transfert des données, tandis que le HTML est utilisé pour afficher les données sur le navigateur.

Un exemple de fichier XML/syntaxe XML

Voici un exemple de fichier XML :




À M


Canard

Contrairement au HTML, c'est un langage de balisage orienté balises, et nous pouvons définir notre propre balise dans un fichier XML. Dans l'exemple ci-dessus, nous avons plusieurs balises définies par l'utilisateur telles que "". Chaque balise aura la balise de fin correspondante. "" est la balise de fin pour "". Nous pouvons définir autant de balises définies par l'utilisateur que nous voulons organiser les données.

Bibliothèques d'analyse en C++ :

Il existe différentes bibliothèques pour analyser les données XML dans la plupart des langages de programmation de haut niveau. C++ n'est pas une exception. Voici les bibliothèques C++ les plus populaires pour analyser les données XML :

  1. RapidXML
  2. PugiXML
  3. TinyXML

Comme son nom l'indique, le RapidXML est principalement axé sur la vitesse, et c'est une bibliothèque d'analyse de style DOM. PugiXML prend en charge la conversion Unicode. Vous pouvez utiliser PugiXML si vous souhaitez convertir le document UTF-16 en UTF-8. TinyXML est une version minimale pour analyser les données XML et pas si rapidement que les deux précédentes. Si vous voulez juste faire le travail et ne vous souciez pas de la vitesse, vous pouvez choisir TinyXML.

Exemples
Maintenant, nous avons une compréhension de base des bibliothèques d'analyse XML et XML en C++. Regardons maintenant quelques exemples pour analyser un fichier XML en C++ :

Dans chacun de ces exemples, nous utiliserons les bibliothèques respectives pour analyser un exemple de fichier XML.

Exemple 1 : Analyser XML en C++ à l'aide de RapidXML

Dans cet exemple de programme, nous montrerons comment analyser XML à l'aide de la bibliothèque RapidXML en C++. Voici le fichier XML d'entrée (exemple.xml) :




John


Sean


Sarah

Notre objectif ici est d'analyser le fichier XML ci-dessus en utilisant C++. Voici le programme C++ pour analyser les données XML à l'aide de RapidXML. Vous pouvez télécharger la bibliothèque RapidXML à partir d'ici.

#inclure
#inclure
#inclure
#include "rapidxml.hpp"
en utilisant l'espace de noms std ;
en utilisant l'espace de noms rapidxml ;
xml_document<> doc
xml_node<> * root_node = NULL;
int main(void)

cout << "\nParsing my students data (sample.xml)… " << endl;
// Lire l'exemple.fichier xml
ifstream theFile ("exemple.xml");
vecteur buffer((istreambuf_iterator(leFichier)), istreambuf_iterator());
amortir.push_back('\0');
// Analyse le tampon
doc.analyser<0>(&buffer[0]);
// Trouver le nœud racine
root_node = doc.first_node("MesDonnéesÉtudiants");
// Itérer sur les nœuds étudiants
pour (xml_node<> * student_node = root_node->first_node("Student"); student_node; student_node = student_node->next_sibling())

cout << "\nStudent Type =   " << student_node->first_attribute("student_type")->value();
cout << endl;
// Interate sur les noms des étudiants
for(xml_node<> * student_name_node = student_node->first_node("Nom"); student_name_node; student_name_node = student_name_node->next_sibling())

cout << "Student Name =   " << student_name_node->valeur();
cout << endl;

cout << endl;

renvoie 0 ;

Exemple 2 : Analyser XML en C++ à l'aide de PugiXML

Dans cet exemple de programme, nous montrerons comment analyser XML à l'aide de la bibliothèque PugiXML en C++. Voici le fichier XML d'entrée (exemple.xml) :











Dans cet exemple de programme, nous montrerons comment analyser XML à l'aide de la bibliothèque pugixml en C++. Vous pouvez télécharger la bibliothèque PugiXML ici.

#inclure
#include "pugixml.hpp"
en utilisant l'espace de noms std ;
en utilisant l'espace de noms pugi;
int main()

cout << "\nParsing employees data (sample.xml)… \n\n";
xml_document doc ;
// charge le fichier XML
si (!doc.load_file("exemple.xml")) return -1;
outils xml_node = doc.child("EmployésDonnées").enfant("Employés");
pour (xml_node_iterator it = outils.commencer(); il != outils.finir(); ++ ça)

cout << "Employees:";
pour (xml_attribute_iterator ait = it->attributes_begin(); ait != it->attributes_end(); ++ait)

cout << " " << ait->Nom() << "=" << ait->valeur();

cout << endl;

cout << endl;
renvoie 0 ;

Exemple-3 : Analyser XML en C++ à l'aide de TinyXML

Dans cet exemple de programme, nous montrerons comment analyser XML à l'aide de la bibliothèque TinyXML en C++. Voici le fichier XML d'entrée (exemple.xml) :



John
Sean
Sarah

Dans cet exemple de programme, nous montrerons comment analyser XML à l'aide de la bibliothèque TinyXML en C++. Vous pouvez télécharger la bibliothèque TinyXML ici.

#inclure
#inclure
#inclure
#include "tinyxml2.cpp"
en utilisant l'espace de noms std ;
en utilisant l'espace de noms tinyxml2 ;
int main(void)

cout << "\nParsing my students data (sample.xml)… " << endl;
// Lire l'exemple.fichier xml
Document XMLDocument ;
doc.LoadFile( "exemple.xml" );
const char* titre = doc.FirstChildElement( "MyStudentsData" )->FirstChildElement( "Student" )->GetText();
printf( "Nom de l'étudiant : %s\n", titre );
XMLText* textNode = doc.LastChildElement( "MyStudentsData" )->LastChildElement( "Student" )->FirstChild()->ToText();
title = textNode->Value();
printf( "Nom de l'étudiant : %s\n", titre );
renvoie 0 ;

Conclusion

Dans cet article, nous avons brièvement discuté du XML et examiné trois exemples différents d'analyse du XML en C++. TinyXML est une bibliothèque minimaliste pour l'analyse des données XML.  La plupart des programmeurs utilisent principalement RapidXML ou PugiXML pour analyser les données XML.

Ports Open Source des moteurs de jeux commerciaux
Les récréations de moteur de jeu gratuites, open source et multiplateformes peuvent être utilisées pour jouer à d'anciens ainsi qu'à certains des titr...
Meilleurs jeux de ligne de commande pour Linux
La ligne de commande n'est pas seulement votre plus grand allié lorsque vous utilisez Linux, elle peut également être une source de divertissement car...
Meilleures applications de mappage de manette de jeu pour Linux
Si vous aimez jouer à des jeux sur Linux avec une manette de jeu au lieu d'un système de saisie clavier et souris typique, il existe des applications ...