Comment analyser XML en C++

How Parse Xml C



Dans cet article, nous allons expliquer comment 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 :



version='1.0' codage='utf-8'?>

>

type_étudiant='À temps partiel'>

>À M>

>

type_étudiant='À plein temps'>

>Canard>

>

>

Contrairement au HTML, il s'agit d'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 il s'agit d'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 aussi 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 (sample.xml) :

version='1.0' codage='utf-8'?>

>

type_étudiant='À temps partiel'>

>John>

>

type_étudiant='À plein temps'>

>Sean>

>

type_étudiant='À temps partiel'>

>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 de Ici .

#comprendre
#comprendre
#comprendre
#include 'rapidxml.hpp'

à l'aide de espace de nomsles heures;
à l'aide de espace de nomsrapidxml;


xml_documentdoc
xml_node *Noeud principal= NUL;

entierprincipale(annuler)
{
cout << ' Analyse des données de mes étudiants (sample.xml).....' <<fin;

// Lecture du fichier sample.xml
ifstream leFichier('exemple.xml');
vecteur<carboniser>amortir((istreambuf_iterator<carboniser>(le fichier)), istreambuf_iterator<carboniser>());
amortir.repousser(' 0');

// Analyse le tampon
doc.analyser<0>(&amortir[0]);

// Trouver le nœud racine
Noeud principal=doc.premier_nœud('MesDonnéesÉtudiants');

// Itérer sur les nœuds étudiants
pour (xml_node *étudiant_nœud=Noeud principal->premier_nœud('Étudiant');étudiant_nœud;étudiant_nœud=étudiant_nœud->prochain_frère())
{
cout << ' Type d'étudiant = ' <<étudiant_nœud->premier_attribut('type_étudiant')->valeur();
cout <<fin;

// Interate sur les noms des étudiants
pour(xml_node *student_name_node=étudiant_nœud->premier_nœud('Nom');student_name_node;student_name_node=student_name_node->prochain_frère())
{
cout << 'Nom de l'étudiant = ' <<student_name_node->valeur();
cout <<fin;
}
cout <<fin;
}

revenir 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 (sample.xml) :

version='1.0' codage='UTF-8' autonome='non' ?>

FormatVersion='1'>

>

Nom='John' Taper='À temps partiel'>

>

Nom='Sean' Taper='À plein temps'>

>

Nom='Sarah' Taper='À temps partiel'>

>

>

>

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 de Ici .

#comprendre
#include 'pugixml.hpp'

à l'aide de espace de nomsles heures;
à l'aide de espace de nomspugi;

entierprincipale()
{
cout << ' Analyse des données des employés (sample.xml)..... ';


xml_document doc;

// charge le fichier XML
si (!doc.fichier de chargement('exemple.xml')) revenir -1;

outils xml_node=doc.enfant('EmployésDonnées').enfant('Des employés');


pour (xml_node_iterator il=outils.commencer();ce!=outils.finir(); ++ce)
{
cout << 'Des employés:';

pour (xml_attribute_iterator ait=ce->attributs_commencer();qui appartiennent!=ce->attributs_fin(); ++qui appartiennent)
{
cout << '' <<qui appartiennent->Nom() << '=' <<qui appartiennent->valeur();
}

cout <<fin;
}

cout <<fin;

revenir 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 (sample.xml) :

version='1.0' codage='utf-8'?>

>

>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 de Ici .

#comprendre
#comprendre
#comprendre
#include 'tinyxml2.cpp'

à l'aide de espace de nomsles heures;
à l'aide de espace de nomsminusculexml2;


entierprincipale(annuler)
{
cout << ' Analyse des données de mes étudiants (sample.xml).....' <<fin;

// Lecture du fichier sample.xml
Document XMLDocument;
doc.Fichier de chargement( 'exemple.xml' );

const carboniser*Titre=doc.ÉlémentPremierEnfant( 'MesDonnéesÉtudiants' )->ÉlémentPremierEnfant( 'Étudiant' )->ObtenirTexte();
imprimer( 'Nom de l'étudiant : %s ', Titre);


XMLText*textNode=doc.LastChildElement( 'MesDonnéesÉtudiants' )->LastChildElement( 'Étudiant' )->Premier enfant()->Écrire un SMS();
Titre=textNode->Valeur();
imprimer( 'Nom de l'étudiant : %s ', Titre);


revenir 0;
}

Conclusion

Dans cet article, nous avons brièvement discuté XML et examiné trois exemples différents de la façon d'analyser 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.