C++

Come analizzare XML in C++

Come analizzare XML in C++

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:




Tom


Drake

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 "". Ogni tag avrà il tag finale corrispondente. “” è il tag finale per “". Possiamo definire tanti tag definiti dall'utente quanti ne vogliamo per organizzare i dati.

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:

  1. RapidXML
  2. PugiXML
  3. 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++:

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




John


Sean


Sara

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((istreambuf_iterator(ilFile)), istreambuf_iterator());
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):



John
Sean
Sara

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.

I migliori giochi di laboratorio dell'app Oculus
Se possiedi un visore Oculus, devi essere informato sul sideloading. Il sideloading è il processo di installazione di contenuti non archiviati sul vis...
I 10 migliori giochi da giocare su Ubuntu
La piattaforma Windows è stata una delle piattaforme dominanti per i giochi a causa dell'enorme percentuale di giochi che si stanno sviluppando oggi p...
I 5 migliori giochi arcade per Linux
Al giorno d'oggi, i computer sono macchine serie utilizzate per i giochi. Se non riesci a ottenere il nuovo punteggio più alto, saprai cosa intendo. I...