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:
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:
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 ++:
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):
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 ");
vettorebuffer ((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):
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.