Hvordan analysere XML i C ++

Hvordan analysere XML i C ++

I denne artikkelen skal vi diskutere hvordan du kan analysere XML på C ++ programmeringsspråk. Vi vil se flere arbeidseksempler for å forstå XML -parsingmekanismen i C++.

Hva er XML?

XML er et markeringsspråk og brukes hovedsakelig til lagring og overføring av data på en organisert måte. XML står for utvidbart markeringsspråk. Det ligner veldig på HTML. XML er helt fokusert på lagring og overføring av dataene, mens HTML brukes til å vise dataene på nettleseren.

En prøve XML -fil/XML -syntaks

Her er en prøve XML -fil:




Tom


Drake

I motsetning til HTML, er det et tagorientert markeringsspråk, og vi kan definere vår egen tag i en XML-fil. I eksemplet ovenfor har vi flere brukerdefinerte tagger som "". Hver tag vil ha den tilsvarende sluttkoden. “” Er sluttkoden for “”. Vi kan definere så mange brukerdefinerte tagger som vi vil organisere dataene.

Parsing biblioteker i C ++:

Det er forskjellige biblioteker for å analysere XML-data i de fleste av programmeringsspråk på høyt nivå. C ++ er ikke et unntak. Her er de mest populære C ++ bibliotekene for å analysere XML -data:

  1. RapidXml
  2. PUGIXML
  3. Tinyxml

Som navnet antyder, er RapidXML hovedsakelig fokusert på hastighet, og det er et parsing -bibliotek for DOM -stil. PUGIXML støtter Unicode -konvertering. Det kan være lurt å bruke PugixML hvis du vil konvertere UTF-16 Doc til UTF-8. TinyXML er en bare minimum versjon for å analysere XML-data og ikke så raskt sammenlignet med de to foregående. Hvis du bare vil få jobben gjort og ikke bryr deg om hastigheten, kan du velge TinyXML.

Eksempler
Nå har vi en grunnleggende forståelse av XML- og XML -parsingbiblioteker i C++. La oss nå se på et par eksempler for å analysere XML -fil i C ++:

  • Eksempel-1: Parse XML i C ++ ved bruk av RapidXML
  • Eksempel-2: Parse XML i C ++ ved bruk av PugixML
  • Eksempel-3: Parse XML i C ++ ved bruk av TinyXML

I hvert av disse eksemplene vil vi bruke de respektive bibliotekene til å analysere en prøve XML -fil.

Eksempel-1: Parse XML i C ++ ved bruk av RapidXML

I dette eksempelprogrammet vil vi demonstrere hvordan du kan analysere XML ved hjelp av RapidXML -bibliotek i C++. Her er inndata XML -filen (prøve.XML):




John


Sean


Sarah

Vårt mål her er å analysere den ovennevnte XML -filen ved hjelp av C++. Her er C ++ -programmet for å analysere XML -data ved hjelp av RapidXML. Du kan laste ned RapidXML -biblioteket herfra.

#inkludere
#inkludere
#inkludere
#include "RapidXML.HPP "
ved hjelp av navneområdet STD;
ved hjelp av navneområdet RapidXML;
xml_document doc
xml_node * root_node = null;
Int Main (Void)

cout << "\nParsing my students data (sample.xml)… " << endl;
// Les prøven.XML -fil
ifstream thefile ("prøve.xml ");
vektor buffer ((istreambuf_iterator(TheFile)), IstreamBuf_iterator());
buffer.push_back ('\ 0');
// analyser bufferen
Doc.analyser<0>(& buffer [0]);
// Finn ut rotnoden
root_node = doc.first_node ("mystudentsdata");
// iterere over studentknutene
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")-> verdi ();
cout << endl;
// interate over studentnavnene
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->verdi();
cout << endl;

cout << endl;

retur 0;

Eksempel-2: Parse XML i C ++ ved bruk av PugixML

I dette eksempelprogrammet vil vi demonstrere hvordan du kan analysere XML ved hjelp av PUGIXML -bibliotek i C++. Her er inndata XML -filen (prøve.XML):











I dette eksempelprogrammet vil vi demonstrere hvordan du kan analysere XML ved hjelp av PUGIXML -bibliotek i C++. Du kan laste ned PugixML -biblioteket herfra.

#inkludere
#include "PUGIXML.HPP "
ved hjelp av navneområdet STD;
ved hjelp av navneområdet PUgi;
int main ()

cout << "\nParsing employees data (sample.xml)… \n\n";
xml_document doc;
// Last inn XML -filen
hvis (!Doc.LOAD_FILE ("Eksempel.xml ")) retur -1;
XML_NODE TOOLS = DOC.Barn ("Ansatte Data").barn ("ansatte");
for (xml_node_iterator it = verktøy.begynne(); den != verktøy.slutt(); ++ det)

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

cout << " " << ait->Navn() <<
"=" << ait->verdi();

cout << endl;

cout << endl;
retur 0;

Eksempel-3: Parse XML i C ++ ved bruk av TinyXML

I dette eksempelprogrammet vil vi demonstrere hvordan du kan analysere XML ved hjelp av TinyXML -biblioteket i C++. Her er inndata XML -filen (prøve.XML):



John
Sean
Sarah

I dette eksempelprogrammet vil vi demonstrere hvordan du kan analysere XML ved hjelp av TinyXML -biblioteket i C++. Du kan laste ned TinyxML -biblioteket herfra.

#inkludere
#inkludere
#inkludere
#include "tinyxml2.CPP "
ved hjelp av navneområdet STD;
ved hjelp av navneområde tinyxml2;
Int Main (Void)

cout << "\nParsing my students data (sample.xml)… " << endl;
// Les prøven.XML -fil
Xmldocument doc;
Doc.LoadFile ("prøve.xml ");
const char* tittel = doc.FirstChildElement ("MyStudentsData")-> FirstChildElement ("Student")-> GetText ();
printf ("Studentnavn: %s \ n", tittel);
XmlText* textNode = doc.LastChildElement ("MyStudentsData")-> LastChildElement ("Student")-> FirstChild ()-> TOTEXT ();
tittel = textNode-> verdi ();
printf ("Studentnavn: %s \ n", tittel);
retur 0;

Konklusjon

I denne artikkelen har vi kort diskutert XML og sett på tre forskjellige eksempler på hvordan du kan analysere XML i C++. TinyXML er et minimalistisk bibliotek for analysering av XML -data. De fleste av programmererne bruker hovedsakelig RapidXML eller PUGIXML for å analysere XML -data.