Come analizzare XML in C ++

Come analizzare XML in C ++

In questo articolo, discuteremo di come analizzare XML nel linguaggio di programmazione C ++. Vedremo diversi esempi di lavoro per comprendere il meccanismo di analisi XML in C++.

Cos'è XML?

XML è un linguaggio di markup ed è utilizzato principalmente per la memorizzazione e il trasferimento di dati in modo organizzato. XML sta per un linguaggio di markup estensibile. È molto simile a HTML. L'XML è completamente focalizzato sull'archiviazione e sul trasferimento dei dati, mentre l'HTML viene utilizzato per la visualizzazione dei dati sul browser.

Una sintassi del file XML/XML di esempio

Ecco un file XML di esempio:




Tom


Drake

A differenza di HTML, è una lingua di markup orientata ai tag e possiamo definire il nostro tag in un file XML. Nell'esempio sopra, abbiamo diversi tag definiti dall'utente come "". Ogni tag avrà il tag finale corrispondente. "" È il tag finale per "". Possiamo definire tanti tag definiti dall'utente che vogliamo organizzare i dati.

Librarie di analisi in C ++:

Esistono varie librerie per analizzare i dati XML nella maggior parte dei linguaggi di programmazione di alto livello. C ++ non è un'eccezione. Ecco le librerie C ++ più popolari per analizzare i dati XML:

  1. Rapidxml
  2. Pugixml
  3. Tinyxml

Come suggerisce il nome, RapidXML è principalmente focalizzato sulla velocità ed è una libreria di analisi DOM di analisi. Pugixml supporta la conversione Unicode. Potresti voler usare pugixml se si desidera convertire UTF-16 DOC in UTF-8. TinyXML è una versione a minima nuda per analizzare i dati XML e non così velocemente rispetto ai due precedenti. Se vuoi fare il lavoro e non importa della velocità, puoi scegliere TinyXML.

Esempi
Ora abbiamo una comprensione di base delle librerie di analisi XML e XML in C++. Diamo ora un'occhiata a un paio di esempi per analizzare il file XML in C ++:

  • Esempio-1: analizza XML in C ++ usando rapidxml
  • Esempio-2: analizza XML in C ++ usando pugixml
  • Esempio-3: analizza XML in C ++ usando TinyXML

In ciascuno di questi esempi, useremo le rispettive librerie per analizzare un file XML di esempio.

Esempio-1: analizza XML in C ++ usando rapidxml

In questo programma di esempio, dimostreremo come analizzare XML usando la libreria rapidxml in C++. Ecco il file XML input (esempio.XML):




John


Sean


Sarah

Il nostro obiettivo qui è quello di analizzare il file XML sopra usando C++. Ecco il programma C ++ per analizzare i dati XML utilizzando rapidxml. Puoi scaricare la libreria rapidxml da qui.

#includere
#includere
#includere
#include "rapidxml.HPP "
Utilizzo dello spazio dei nomi std;
Utilizzo dello spazio dei nomi rapidXML;
xml_document doc
xml_node * root_node = null;
int main (vuoto)

cout << "\nParsing my students data (sample.xml)… " << endl;
// Leggi il campione.file XML
ifstream thefile ("campione.XML ");
vettore buffer ((istreambuf_iterator(thefile)), istreambuf_iterator());
respingente.push_back ('\ 0');
// analizza il buffer
doc.analizzare<0>(& buffer [0]);
// Scopri il nodo radice
root_node = doc.first_node ("MyStudentsData");
// iterare sui nodi degli studenti
for (xml_node * studente_node = root_node-> first_node ("studente");
Student_node; Student_Node = Student_Node-> next_sibling ())

cout << "\nStudent Type = " <<
Student_node-> first_attribute ("Student_Type")-> value ();
cout << endl;
// interagisci sui nomi degli studenti
for (xml_node * studente_name_node = studente_node-> first_node ("nome");
Student_name_node; Student_Name_Node = Student_Name_Node-> Next_Sibling ())

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

cout << endl;

restituzione 0;

Esempio-2: analizza XML in C ++ usando pugixml

In questo programma di esempio, dimostreremo come analizzare XML usando la libreria Pugixml in C++. Ecco il file XML input (esempio.XML):











In questo programma di esempio, dimostreremo come analizzare XML usando la libreria Pugixml in C++. Puoi scaricare la libreria Pugixml da qui.

#includere
#include "pugixml.HPP "
Utilizzo dello spazio dei nomi std;
Utilizzo dello spazio dei nomi pugi;
int main ()

cout << "\nParsing employees data (sample.xml)… \n\n";
xml_document doc;
// Carica il file XML
Se (!doc.load_file ("campione.xml ")) return -1;
XML_Node Tools = Doc.Child ("EmployersData").figlio ("dipendenti");
per (xml_node_iterator it = strumenti.inizio(); Esso != Strumenti.FINE(); ++ esso)

cout << "Employees:";
for (xml_attribute_iterator ait = it-> attributes_begin ();
ait != it-> attributi_end (); ++ AIT)

cout << " " << ait->nome() <<
"=" << ait->valore();

cout << endl;

cout << endl;
restituzione 0;

Esempio-3: analizza XML in C ++ usando TinyXML

In questo programma di esempio, dimostreremo come analizzare XML usando la libreria TinyXML in C++. Ecco il file XML input (esempio.XML):



John
Sean
Sarah

In questo programma di esempio, dimostreremo come analizzare XML usando la libreria TinyXML in C++. Puoi scaricare la libreria tinyxml da qui.

#includere
#includere
#includere
#include "tinyxml2.CPP "
Utilizzo dello spazio dei nomi std;
Utilizzo dello spazio dei nomi tinyxml2;
int main (vuoto)

cout << "\nParsing my students data (sample.xml)… " << endl;
// Leggi il campione.file XML
Xmldocument doc;
doc.Carico ("campione.XML ");
const char* title = doc.FirstChildElement ("MyStudentsData")-> FirstChildElement ("Studente")-> getText ();
printf ("Nome studente: %s \ n", titolo);
Xmltext* textNode = doc.Lastchildelement ("MyStudentsData")-> lastChildElement ("Studente")-> FirstChild ()-> Totext ();
title = textNode-> value ();
printf ("Nome studente: %s \ n", titolo);
restituzione 0;

Conclusione

In questo articolo, abbiamo discusso brevemente XML e esaminato tre diversi esempi su come analizzare XML in C++. TinyXML è una libreria minimalista per l'analisi dei dati XML. La maggior parte dei programmatori utilizza principalmente rapidxml o pugixml per analizzare i dati XML.