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++.
Che cos'è l'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:
versione='1.0' codifica='utf-8'?>
>
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 vogliamo 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. C++ non fa eccezione. Ecco le librerie C++ più popolari per analizzare i dati XML:
- RapidXML
- PugiXML
- TinyXML
Come suggerisce il nome, RapidXML è principalmente focalizzato sulla velocità ed è una libreria di analisi in stile DOM. 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 utilizzando la libreria RapidXML in C++. Ecco il file XML di input (sample.xml):
versione='1.0' codifica='utf-8'?>>
Il nostro obiettivo qui è analizzare il file XML di cui 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'
usando spazio dei nomiore;
usando spazio dei nomirapidxml;
xml_documentdocumento
xml_node *root_node= NULLO;
intprincipale(vuoto)
{
costo << ' Analisi dei dati dei miei studenti (sample.xml).....' <<fine;
// Leggi il file sample.xml
ifstream theFile('campione.xml');
vettore<char>respingente((istreambuf_iterator<char>(il file)), istreambuf_iterator<char>());
respingente.respingere(' 0');
// Analizza il buffer
doc.analizzare<0>(&respingente[0]);
// Scopri il nodo radice
root_node=doc.primo_nodo('Dati MieiStudenti');
// Itera sui nodi degli studenti
per (xml_node *studente_nodo=root_node->primo_nodo('Alunno');studente_nodo;studente_nodo=studente_nodo->prossimo_fratello())
{
costo << ' Tipo di studente = ' <<studente_nodo->primo_attributo('tipo_studente')->valore();
costo <<fine;
// Interagisci sui nomi degli studenti
per(xml_node *student_name_node=studente_nodo->primo_nodo('Nome');student_name_node;student_name_node=student_name_node->prossimo_fratello())
{
costo << 'Nome studente = ' <<student_name_node->valore();
costo <<fine;
}
costo <<fine;
}
Restituzione 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 (sample.xml):
versione='1.0' codifica='UTF-8' indipendente, autonomo='no' ?>>
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'
usando spazio dei nomiore;
usando spazio dei nomipugi;
intprincipale()
{
costo << ' Analisi dei dati dei dipendenti (sample.xml)..... ';
documento xml_document;
// carica il file XML
Se (!doc.load_file('campione.xml')) Restituzione -1;
strumenti xml_node=doc.bambino('Dati Dipendenti').bambino('Dipendenti');
per (xml_node_iterator it=utensili.inizio();esso!=utensili.fine(); ++esso)
{
costo << 'Dipendenti:';
per (xml_attribute_iterator ait=esso->attributi_inizio();appartenente!=esso->attributi_fine(); ++appartenente)
{
costo << '' <<appartenente->nome() << '=' <<appartenente->valore();
}
costo <<fine;
}
costo <<fine;
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 di input (sample.xml):
versione='1.0' codifica='utf-8'?>>
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 spazio dei nomiore;
usando spazio dei nomitinyxml2;
intprincipale(vuoto)
{
costo << ' Analisi dei dati dei miei studenti (sample.xml).....' <<fine;
// Leggi il file sample.xml
XMLDocument doc;
doc.Carica file( 'campione.xml' );
cost char*titolo=doc.FirstChildElement( 'Dati MieiStudenti' )->FirstChildElement( 'Alunno' )->Ottieni testo();
printf( 'Nome studente: %s ', titolo);
XMLText*textNode=doc.LastChildElement( 'Dati MieiStudenti' )->LastChildElement( 'Alunno' )->Primogenito()->ToText();
titolo=textNode->Valore();
printf( 'Nome studente: %s ', titolo);
Restituzione 0;
}
Conclusione
In questo articolo, abbiamo discusso brevemente XML e ho 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.