C ++

Hvordan analysere XML i C ++

Hvordan analysere XML i C ++

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:




Tom


Drake

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 “”. Hver tag vil ha den tilsvarende sluttkoden. “”Er sluttmerket for“”. Vi kan definere så mange brukerdefinerte koder som vi ønsker å organisere dataene.

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:

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

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




John


Sean


Sarah

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



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 "
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.

Mus Topp 5 ergonomiske datamuseprodukter for Linux
Topp 5 ergonomiske datamuseprodukter for Linux
Gir langvarig bruk av datamaskiner smerter i håndleddet eller fingrene? Lider du av stive ledd og må hele tiden riste på deg hendene? Føler du en bren...
Mus Hvordan endre mus og berøringsplateinnstillinger ved hjelp av Xinput i Linux
Hvordan endre mus og berøringsplateinnstillinger ved hjelp av Xinput i Linux
De fleste Linux-distribusjoner leveres med "libinput" -biblioteket som standard for å håndtere inngangshendelser på et system. Den kan behandle inngan...
Mus Kartlegg museknappene på en annen måte for annen programvare med X-Mouse Button Control
Kartlegg museknappene på en annen måte for annen programvare med X-Mouse Button Control
Kanskje du trenger et verktøy som kan gjøre at musens kontroll endres med hvert program du bruker. Hvis dette er tilfelle, kan du prøve et program som...