I denne artikkelen skal vi diskutere hvordan man kan analysere XML i C ++ programmeringsspråk. Vi vil se flere arbeidseksempler for å forstå XML-parseringsmekanismen i C++.
Hva er XML?
XML er et kodespråk og brukes hovedsakelig for lagring og overføring av data på en organisert måte. XML står for eXtensible Markup Language. Det er veldig likt HTML. XML er fullstendig fokusert på lagring og overføring av data, mens HTML brukes til å vise dataene i nettleseren.
En prøve XML-fil / XML-syntaks
Her er et eksempel på en XML-fil:
I motsetning til HTML er det et tag-orientert markeringsspråk, og vi kan definere vår egen tag i en XML-fil. I eksemplet ovenfor har vi flere brukerdefinerte koder som “
Parsing Biblioteker i C ++:
Det er forskjellige biblioteker for å analysere XML-data på de fleste programmeringsspråk på høyt nivå. C ++ er ikke et unntak. Her er de mest populære C ++ - bibliotekene for å analysere XML-data:
- RapidXML
- PugiXML
- TinyXML
Som navnet antyder, er RapidXML hovedsakelig fokusert på hastighet, og det er et analyseringsbibliotek i 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 minimumsversjon for å analysere XML-data og ikke så rask sammenlignet med de to foregående. Hvis du bare vil gjøre jobben og ikke bryr deg om hastigheten, kan du velge TinyXML.
Eksempler
Nå har vi en grunnleggende forståelse av XML- og XML-parseringsbiblioteker i C++. La oss nå se på et par eksempler for å analysere xml-filer i C ++:
- Eksempel 1: Analyser XML i C ++ ved bruk av RapidXML
- Eksempel 2: Analyse av XML i C ++ ved bruk av PugiXML
- Eksempel 3: Analyse av 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: Analyser XML i C ++ ved bruk av RapidXML
I dette eksempelprogrammet vil vi demonstrere hvordan du kan analysere xml ved hjelp av RapidXML-biblioteket i C++. Her er inngangs-XML-filen (eksempel.xml):
Målet vårt her er å analysere XML-filen ovenfor 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 "
bruker navneområde std;
ved hjelp av namespace rapidxml;
xml_document <> dok
xml_node <> * root_node = NULL;
int main (ugyldig)
cout << "\nParsing my students data (sample.xml)… " << endl;
// Les prøven.xml-fil
ifstream theFile ("prøve.xml ");
vektor
buffer.push_back ('\ 0');
// Analiser bufferen
dok.analysere<0>(& buffer [0]);
// Finn ut rotnoden
root_node = dok.first_node ("MyStudentsData");
// Iterere over studentnodene
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;
// Samhandle om 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: Analyse av XML i C ++ ved bruk av PugiXML
I dette eksempelprogrammet vil vi demonstrere hvordan du kan analysere xml ved hjelp av PugiXML-biblioteket i C++. Her er inngangs-XML-filen (eksempel.xml):
I dette eksempelprogrammet vil vi demonstrere hvordan du kan analysere xml ved hjelp av pugixml-biblioteket i C++. Du kan laste ned PugiXML-biblioteket herfra.
#inkludere#include "pugixml.hpp "
bruker navneområde std;
bruker navneområdet pugi;
int main ()
cout << "\nParsing employees data (sample.xml)… \n\n";
xml_document doc;
// laste inn XML-filen
hvis (!dok.load_file ("prøve.xml ")) return -1;
xml_node verktøy = dok.barn ("AnsatteData").barn ("Ansatte");
for (xml_node_iterator it = verktøy.begynne(); den != verktøy.slutt(); ++ det)
cout << "Employees:";
for (xml_attribute_iterator ait = it-> attributts_begin (); ait != it-> attributter_end (); ++ ait)
cout << " " << ait->Navn() << "=" << ait->verdi();
cout << endl;
cout << endl;
retur 0;
Eksempel 3: Analyse av 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 inngangs-XML-filen (eksempel.xml):
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 "
bruker navneområde std;
bruker namespace tinyxml2;
int main (ugyldig)
cout << "\nParsing my students data (sample.xml)… " << endl;
// Les prøven.xml-fil
XMLDokumentdokument;
dok.LoadFile ("prøve.xml ");
const char * title = doc.FirstChildElement ("MyStudentsData") -> FirstChildElement ("Student") -> GetText ();
printf ("Studentnavn:% s \ n", tittel);
XMLText * textNode = doc.LastChildElement ("MyStudentsData") -> LastChildElement ("Student") -> FirstChild () -> ToText ();
title = 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 man kan analysere XML i C++. TinyXML er et minimalistisk bibliotek for analyse av XML-data. De fleste av programmørene bruker hovedsakelig RapidXML eller PugiXML for å analysere XML-data.