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 un langage de balisage extensible. C'est très similaire à HTML. Le XML est complètement 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 syntaxe de fichier XML / XML
Voici un exemple de fichier XML:
Contrairement à HTML, il s'agit d'une langue de balisage orientée étiquette, 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 fin de fin pour "". Nous pouvons définir autant de balises définies par l'utilisateur que nous voulons organiser les données.
Analyse des bibliothèques 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:
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 voudrez peut-être utiliser PUGIXML si vous souhaitez convertir UTF-16 Doc en UTF-8. TinyXML est une version nue à minimum pour analyser les données XML et non aussi rapide par rapport aux deux précédents. Si vous voulez simplement 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 le fichier XML en C ++:
Dans chacun de ces exemples, nous utiliserons les bibliothèques respectives pour analyser un exemple de fichier XML.
Exemple-1: analyse XML en C ++ en utilisant 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 "
Utilisation de Namespace Std;
Utilisation de l'espace de noms RapidXml;
XML_Document Doc
xml_node * root_node = null;
int Main (vide)
couter << "\nParsing my students data (sample.xml)… " << endl;
// Lire l'échantillon.fichier xml
ifstream thefile ("échantillon.xml ");
vecteurtampon ((iStreambuf_iterator (thefile)), iStreambuf_iterator ());
amortir.push_back ('\ 0');
// analyser le tampon
doc.analyse<0>(& tampon [0]);
// découvrez le nœud racine
root_node = doc.First_Node ("MystuentsData");
// itération sur les nœuds étudiants
pour (xml_node * student_node = root_node-> first_node ("étudiant");
Student_Node; Student_Node = Student_Node-> next_sibling ())
couter << "\nStudent Type = " <<
Student_Node-> first_attribute ("Student_type") -> value ();
couter << endl;
// Intrée sur les noms des étudiants
pour (xml_node * étudiant_name_node = student_node-> first_node ("name");
Student_name_node; student_name_node = student_name_node-> next_sibling ())
couter << "Student Name = " << student_name_node->valeur();
couter << endl;
couter << endl;
retour 0;
Exemple-2: analyse XML en C ++ en utilisant 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 à partir d'ici.
#inclure
#include "pugixml.HPP "
Utilisation de Namespace Std;
Utilisation de l'espace de noms pugi;
int main()
couter << "\nParsing employees data (sample.xml)… \n\n";
XML_Document Doc;
// Chargez le fichier XML
si (!doc.load_file ("échantillon.xml ")) return -1;
xml_node outils = doc.Enfant ("EmployésData").enfant ("employés");
pour (xml_node_iterator it = outils.commencer(); il != outils.fin(); ++ it)
couter << "Employees:";
pour (xml_attribute_iterator ait = it-> attributs_begin ();
ait != it-> attributs_end (); ++ AIT)
couter << " " << ait->nom() <<
"=" << ait->valeur();
couter << endl;
couter << endl;
retour 0;
Exemple-3: analyse XML en C ++ en utilisant 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 à partir d'ici.
#inclure
#inclure
#inclure
#include "Tinyxml2.CPP "
Utilisation de Namespace Std;
en utilisant l'espace de noms tinyxml2;
int Main (vide)
couter << "\nParsing my students data (sample.xml)… " << endl;
// Lire l'échantillon.fichier xml
XMLDocument Doc;
doc.Chargement ("".xml ");
const char * title = doc.FirstChildElement ("MystudentSData") -> FirstChildElement ("Student") -> getText ();
printf ("Nom de l'élève:% s \ n", titre);
Xmltext * textNode = doc.LastChildElement ("MystudentSdata") -> LastChildElement ("Student") -> FirstChild () -> TOTEXT ();
title = textNode-> value ();
printf ("Nom de l'élève:% s \ n", titre);
retour 0;
Conclusion
Dans cet article, nous avons brièvement discuté de XML et examiné trois exemples différents de comment analyser XML en C++. TinyXML est une bibliothèque minimaliste pour l'analyse des données XML. La plupart des programmeurs utilisent principalement les données RapidXML ou PUGIXML pour analyser les données XML.