Slik analyserer du XML i C ++

How Parse Xml C



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

Hva er XML?

XML er et kodespråk og brukes hovedsakelig til lagring og overføring av data på en organisert måte. XML står for eXtensible Markup Language. Det ligner veldig på HTML. XML er fullstendig fokusert på lagring og overføring av dataene, mens HTML brukes til å vise dataene i nettleseren.







En eksempel XML -fil/XML -syntaks

Her er et eksempel på en XML -fil:



versjon='1.0' koding='utf-8'?>

>

student_type='Deltid'>

>Tom>

>

student_type='Fulltid'>

>Drake>

>

>

I motsetning til HTML, er det et tag-orientert markup-språk, og vi kan definere vår egen tag i en XML-fil. I eksemplet ovenfor har vi flere brukerdefinerte koder som f.eks. Hver tag vil ha den tilhørende sluttkoden. er sluttkoden for. Vi kan definere så mange brukerdefinerte tagger som vi vil organisere dataene.



Analyse av 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å raskt 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 -analyseringsbiblioteker i C ++. La oss nå se på et par eksempler for å analysere xml -fil i C ++:



  • Eksempel 1: Analyser XML i C ++ ved hjelp av RapidXML
  • Eksempel 2: Analyser XML i C ++ ved hjelp av PugiXML
  • Eksempel 3: Analyser XML i C ++ ved hjelp av TinyXML

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

Eksempel 1: Analyser XML i C ++ ved hjelp av RapidXML

I dette eksempelprogrammet vil vi demonstrere hvordan du kan analysere xml ved å bruke RapidXML -biblioteket i C ++. Her er XML -filen (sample.xml):

versjon='1.0' koding='utf-8'?>

>

student_type='Deltid'>

>John>

>

student_type='Fulltid'>

>Sean>

>

student_type='Deltid'>

>Sarah>

>

>

Målet vårt her er å analysere XML -filen ovenfor med C ++. Her er C ++ - programmet for å analysere XML -data ved hjelp av RapidXML. Du kan laste ned RapidXML -biblioteket fra Her .

#inkludere
#inkludere
#inkludere
#include 'rapidxml.hpp'

ved hjelp av navneområdetimer;
ved hjelp av navneområderapidxml;


xml_documentdok
xml_node *root_node= NULL;

inthoved-(tomrom)
{
koste << ' nParser elevdataene mine (sample.xml) ..... ' <<endl;

// Les filen sample.xml
ifstream theFile('sample.xml');
vektor<røye>buffer((istreambuf_iterator<røye>(filen)), istreambuf_iterator<røye>());
buffer.push_back(' 0');

// Analyser bufferen
dok.analysere<0>(&buffer[0]);

// Finn ut rotnoden
root_node=dok.første_node('MyStudentsData');

// Iterate over studentnodene
til (xml_node *student_node=root_node->første_node('Student');student_node;student_node=student_node->neste_sibling())
{
koste << ' nStudenttype = ' <<student_node->første_attributt('student_type')->verdi();
koste <<endl;

// Interate over studentnavnene
til(xml_node *student_name_node=student_node->første_node('Navn');student_name_node;student_name_node=student_name_node->neste_sibling())
{
koste << 'Studentnavn =' <<student_name_node->verdi();
koste <<endl;
}
koste <<endl;
}

komme tilbake 0;
}

Eksempel 2: Analyser XML i C ++ ved hjelp av PugiXML

I dette eksempelprogrammet vil vi demonstrere hvordan du kan analysere xml ved å bruke PugiXML -biblioteket i C ++. Her er XML -filen (sample.xml):

versjon='1.0' koding='UTF-8' frittstående='Nei' ?>

FormatVersion='1'>

>

Navn='John' Type='Deltid'>

>

Navn='Sean' Type='Fulltid'>

>

Navn='Sarah' Type='Deltid'>

>

>

>

I dette eksempelprogrammet vil vi demonstrere hvordan du kan analysere xml ved å bruke pugixml -biblioteket i C ++. Du kan laste ned PugiXML -biblioteket fra Her .

#inkludere
#include 'pugixml.hpp'

ved hjelp av navneområdetimer;
ved hjelp av navneområdepugi;

inthoved-()
{
koste << ' nAnalyse av ansattes data (sample.xml) ..... n n';


xml_document doc;

// last inn XML -filen
hvis (!dok.load_file('sample.xml')) komme tilbake -1;

xml_node verktøy=dok.barn('AnsatteData').barn('Ansatte');


til (xml_node_iterator det=verktøy.begynne();den!=verktøy.slutt(); ++den)
{
koste << 'Ansatte:';

til (xml_attribute_iterator ait=den->attributter_begynner();tilhørighet!=den->attributter_end(); ++tilhørighet)
{
koste << '' <<tilhørighet->Navn() << '=' <<tilhørighet->verdi();
}

koste <<endl;
}

koste <<endl;

komme tilbake 0;

}

Eksempel 3: Analyser XML i C ++ ved hjelp av TinyXML

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

versjon='1.0' koding='utf-8'?>

>

>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 fra Her .

#inkludere
#inkludere
#inkludere
#include 'tinyxml2.cpp'

ved hjelp av navneområdetimer;
ved hjelp av navneområdetinyxml2;


inthoved-(tomrom)
{
koste << ' nParser elevdataene mine (sample.xml) ..... ' <<endl;

// Les filen sample.xml
XMLDocument doc;
dok.LoadFile( 'sample.xml' );

konst røye*tittel=dok.FirstChildElement( 'MyStudentsData' )->FirstChildElement( 'Student' )->GetText();
printf( 'Studentnavn: %s n', tittel);


XMLText*textNode=dok.LastChildElement( 'MyStudentsData' )->LastChildElement( 'Student' )->Første barn()->Til tekst();
tittel=textNode->Verdi();
printf( 'Studentnavn: %s n', tittel);


komme tilbake 0;
}

Konklusjon

I denne artikkelen har vi kort diskutert XML og så på tre forskjellige eksempler på hvordan man kan analysere XML i C ++. TinyXML er et minimalistisk bibliotek for analyse av XML -data. De fleste programmerere bruker hovedsakelig RapidXML eller PugiXML til å analysere XML -data.