In questo articolo, discuteremo 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 e viene utilizzato principalmente per archiviare e trasferire dati in modo organizzato. XML sta per eXtensible Markup Language. È molto simile all'HTML. L'XML è completamente focalizzato sull'archiviazione e il trasferimento dei dati, mentre l'HTML viene utilizzato per visualizzare i dati sul browser.
Un esempio di file XML/sintassi XML
Ecco un file XML di esempio:
A differenza dell'HTML, è un linguaggio di markup orientato ai tag e possiamo definire il nostro tag in un file XML. Nell'esempio sopra, abbiamo diversi tag definiti dall'utente come "
Analisi delle librerie in C++:
Esistono varie librerie per analizzare i dati XML nella maggior parte dei linguaggi di programmazione di alto livello. Il C++ non fa eccezione. Ecco le librerie C++ più popolari per analizzare i dati XML:
- RapidXML
- PugiXML
- TinyXML
Come suggerisce il nome, RapidXML si concentra principalmente sulla velocità ed è una libreria di analisi in stile DOMDOM. PugiXML supporta la conversione Unicode. Potresti voler usare PugiXML se vuoi convertire il documento UTF-16 in UTF-8. TinyXML è una versione minima per analizzare i dati XML e non così veloce rispetto alle due precedenti. Se vuoi solo portare a termine il lavoro e non ti interessa la velocità, puoi scegliere TinyXML.
Esempi
Ora, abbiamo una conoscenza 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: analizzare XML in C++ utilizzando PugiXML
- Esempio 3: analizza XML in C++ usando TinyXML
In ciascuno di questi esempi, utilizzeremo 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 di input (esempio.xml):
Il nostro obiettivo qui è analizzare il file XML di cui sopra usando C++. Ecco il programma C++ per analizzare i dati XML usando RapidXML. Puoi scaricare la libreria RapidXML da qui.
#includere#includere
#includere
#include "rapidxml.hp"
usando lo spazio dei nomi std;
utilizzando lo spazio dei nomi rapidxml;
xml_document<> documento
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.push_back('\0');
// Analizza il buffer
documento.analizzare<0>(&buffer[0]);
// Scopri il nodo radice
root_node = documento.first_node("MyStudentsData");
// Itera sui nodi degli studenti
for (xml_node<> * student_node = root_node->first_node("Student"); 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<> * student_name_node = student_node->first_node("Name"); student_name_node; student_name_node = student_name_node->next_sibling())
cout << "Student Name = " << student_name_node->valore();
cout << endl;
cout << endl;
restituisce 0;
Esempio 2: analizzare XML in C++ utilizzando PugiXML
In questo programma di esempio, dimostreremo come analizzare xml usando la libreria PugiXML in C++. Ecco il file XML di 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.hp"
usando lo spazio dei nomi std;
usando lo spazio dei nomi pugi;
intero principale()
cout << "\nParsing employees data (sample.xml)… \n\n";
documento xml_document;
// carica il file XML
Se (!documento.load_file("campione.xml")) return -1;
xml_node tools = doc.figlio("Dati Dipendenti").figlio("Dipendenti");
for (xml_node_iterator it = strumenti.inizio(); è != strumenti.fine(); ++it)
cout << "Employees:";
for (xml_attribute_iterator ait = it->attributes_begin(); ait != it->attributes_end(); ++ait)
cout << " " << ait->nome() << "=" << ait->valore();
cout << endl;
cout << endl;
restituisce 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 di 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"
usando lo spazio dei nomi std;
usando lo spazio dei nomi tinyxml2;
int main (vuoto)
cout << "\nParsing my students data (sample.xml)… " << endl;
// Leggi il campione.file xml
documento XMLDocument;
documento.LoadFile("campione.xml");
const char* titolo = doc.FirstChildElement( "MyStudentsData" )->FirstChildElement( "Student" )->GetText();
printf("Nome studente: %s\n", titolo);
XMLText* textNode = documento.LastChildElement( "MyStudentsData" )->LastChildElement( "Student" )->FirstChild()->ToText();
title = textNode->Value();
printf("Nome studente: %s\n", titolo);
restituisce 0;
Conclusione
In questo articolo abbiamo discusso brevemente XML e esaminato tre diversi esempi di 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.