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 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:




À M


Canard

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:

  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 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 ++:

  • Exemple-1: analyse XML en C ++ en utilisant RapidXml
  • Exemple-2: analyse XML en C ++ en utilisant PUGIXML
  • Exemple-3: analyse XML en C ++ en utilisant TinyxML

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):




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 "
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 ");
vecteur tampon ((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):



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 à 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.