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 :
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 "
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 :
- RapidXML
- PugiXML
- 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++ :
- Exemple 1 : Analyser XML en C++ à l'aide de RapidXML
- Exemple 2 : Analyser XML en C++ à l'aide de PugiXML
- Exemple-3 : Analyser XML en C++ à l'aide de TinyXML
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) :
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
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) :
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.