Kaip išanalizuoti XML naudojant C ++

How Parse Xml C



Šiame straipsnyje aptarsime, kaip išanalizuoti XML C ++ programavimo kalba. Pamatysime kelis darbinius pavyzdžius, kad suprastume XML analizės mechanizmą C ++.

Kas yra XML?

XML yra žymėjimo kalba ir daugiausia naudojama organizuotai saugoti ir perduoti duomenis. XML reiškia eXtensible Markup Language. Tai labai panašu į HTML. XML yra visiškai sutelktas į duomenų saugojimą ir perdavimą, o HTML naudojamas duomenims rodyti naršyklėje.







Pavyzdinis XML failas/XML sintaksė

Štai XML failo pavyzdys:



versija=„1.0“ kodavimas=„utf-8“?>

>

studento_ tipas=„Ne visą darbo dieną“>

>Tomas>

>

studento_ tipas='Pilnas laikas'>

>Drake>

>

>

Skirtingai nuo HTML, tai žymėjimo kalba, skirta žymėms, ir mes galime apibrėžti savo žymą XML faile. Pirmiau pateiktame pavyzdyje turime keletą vartotojo apibrėžtų žymų, tokių kaip. Kiekviena žyma turės atitinkamą pabaigos žymą. yra pabaigos žyma. Mes galime apibrėžti tiek vartotojo apibrėžtų žymų, kiek norime tvarkyti duomenis.



Bibliotekų analizavimas naudojant C ++:

Yra įvairių bibliotekų, skirtų analizuoti XML duomenis daugelyje aukšto lygio programavimo kalbų. C ++ nėra išimtis. Čia yra populiariausios C ++ bibliotekos XML duomenims analizuoti:





  1. „RapidXML“
  2. PugiXML
  3. „TinyXML“

Kaip rodo pavadinimas, „RapidXML“ daugiausia dėmesio skiria greičiui ir yra DOM stiliaus analizės biblioteka. „PugiXML“ palaiko „Unicode“ konvertavimą. Jei norite konvertuoti UTF-16 doc į UTF-8, galbūt norėsite naudoti „PugiXML“. „TinyXML“ yra minimali versija, skirta analizuoti XML duomenis, o ne taip greitai, palyginti su ankstesniais dviem. Jei norite tiesiog atlikti darbą ir jums nerūpi greitis, galite pasirinkti „TinyXML“.

Pavyzdžiai
Dabar mes turime pagrindinį supratimą apie XML ir XML analizavimo bibliotekas C ++. Dabar pažvelkime į keletą pavyzdžių, kaip išanalizuoti xml failą C ++:



  • 1 pavyzdys: analizuokite XML C ++ naudodami „RapidXML“
  • 2 pavyzdys: analizuokite XML C ++ naudodami „PugiXML“
  • 3 pavyzdys: analizuokite XML C ++ naudodami „TinyXML“

Kiekviename iš šių pavyzdžių naudosime atitinkamas bibliotekas, norėdami išanalizuoti XML failo pavyzdį.

1 pavyzdys: analizuokite XML C ++ naudodami „RapidXML“

Šioje programos pavyzdyje parodysime, kaip išanalizuoti xml naudojant „RapidXML“ biblioteką C ++. Čia yra įvesties XML failas (sample.xml):

versija=„1.0“ kodavimas=„utf-8“?>

>

studento_ tipas=„Ne visą darbo dieną“>

>Jonas>

>

studento_ tipas='Pilnas laikas'>

>Šonas>

>

studento_ tipas=„Ne visą darbo dieną“>

>Sara>

>

>

Mūsų tikslas yra išanalizuoti aukščiau pateiktą XML failą naudojant C ++. Čia yra C ++ programa, skirta analizuoti XML duomenis naudojant „RapidXML“. „RapidXML“ biblioteką galite atsisiųsti iš Čia .

#įtraukti
#įtraukti
#įtraukti
#include 'rapidxml.hpp'

naudojant vardų sritisvalandų;
naudojant vardų sritisrapidxml;


xml_dokumentasdoc
xml_node *root_node= NULL;

tarptpagrindinis(tuštuma)
{
kaina << ' nAnalizuojamas mano mokinių duomenys (sample.xml) ..... “ <<endl;

// Skaitykite failą sample.xml
ifstream theFile('sample.xml');
vektorius<anglis>buferis((istreambuf_iterator<anglis>(failas)), istreambuf_iterator<anglis>());
buferis.pastumti atgal(' 0');

// Išnagrinėti buferį
doc.išanalizuoti<0>(&buferis[0]);

// Sužinokite šakninį mazgą
root_node=doc.first_node(„MyStudentsData“);

// Pakartokite mokinio mazgus
dėl (xml_node *student_node=root_node->first_node('Studentas');student_node;student_node=student_node->next_sibling())
{
kaina << ' nMokinio tipas = ' <<student_node->first_attribute('student_type')->vertės();
kaina <<endl;

// Bendrauti su studentų vardais
dėl(xml_node *mokinio_vardas_mazgis=student_node->first_node('Vardas');mokinio_vardas_mazgis;mokinio_vardas_mazgis=mokinio_vardas_mazgis->next_sibling())
{
kaina << 'Mokinio vardas =' <<mokinio_vardas_mazgis->vertės();
kaina <<endl;
}
kaina <<endl;
}

grįžti 0;
}

2 pavyzdys: analizuokite XML C ++ naudodami „PugiXML“

Šioje programos pavyzdyje parodysime, kaip išanalizuoti xml naudojant „PugiXML“ biblioteką C ++. Čia yra įvesties XML failas (sample.xml):

versija=„1.0“ kodavimas=„UTF-8“ savarankiškas='ne' ?>

FormatVersion=„1“>

>

vardas='Jonas' Tipas=„Ne visą darbo dieną“>

>

vardas=„Šonas“ Tipas='Pilnas laikas'>

>

vardas='Sara' Tipas=„Ne visą darbo dieną“>

>

>

>

Šioje programos pavyzdyje parodysime, kaip išanalizuoti xml naudojant pugixml biblioteką C ++. „PugiXML“ biblioteką galite atsisiųsti iš Čia .

#įtraukti
#include 'pugixml.hpp'

naudojant vardų sritisvalandų;
naudojant vardų sritispugi;

tarptpagrindinis()
{
kaina << ' nAnalizuojami darbuotojų duomenys (sample.xml) ..... n n';


xml_document doc;

// įkelti XML failą
jei (!doc.apkrovos_failas('sample.xml')) grįžti -1;

xml_node įrankiai=doc.vaikas(„Darbuotojų duomenys“).vaikas(„Darbuotojai“);


dėl (xml_node_iterator=įrankiai.pradėti();tai!=įrankiai.galas(); ++tai)
{
kaina << 'Darbuotojai:';

dėl (xml_attribute_iterator ait=tai->attributes_begin();priklausymas!=tai->attributes_end(); ++priklausymas)
{
kaina << '' <<priklausymas->vardas() << '=' <<priklausymas->vertės();
}

kaina <<endl;
}

kaina <<endl;

grįžti 0;

}

3 pavyzdys: analizuokite XML C ++ naudodami „TinyXML“

Šioje programos pavyzdyje parodysime, kaip išanalizuoti xml naudojant „TinyXML“ biblioteką C ++. Čia yra įvesties XML failas (sample.xml):

versija=„1.0“ kodavimas=„utf-8“?>

>

>Jonas>

>Šonas>

>Sara>

>

Šioje programos pavyzdyje parodysime, kaip išanalizuoti xml naudojant „TinyXML“ biblioteką C ++. „TinyXML“ biblioteką galite atsisiųsti iš Čia .

#įtraukti
#įtraukti
#įtraukti
#include 'tinyxml2.cpp'

naudojant vardų sritisvalandų;
naudojant vardų sritistinyxml2;


tarptpagrindinis(tuštuma)
{
kaina << ' nAnalizuojamas mano mokinių duomenys (sample.xml) ..... “ <<endl;

// Skaitykite failą sample.xml
XMLDokumentas doc;
doc.LoadFile( 'sample.xml' );

konst anglis*titulas=doc.FirstChildElement( „MyStudentsData“ )->FirstChildElement( 'Studentas' )->„GetText“();
printf( 'Mokinio vardas: %s n', pavadinimas);


XMLText*textNode=doc.Paskutinis vaikas( „MyStudentsData“ )->Paskutinis vaikas( 'Studentas' )->FirstChild()->Parašyti();
titulas=textNode->Vertė();
printf( 'Mokinio vardas: %s n', pavadinimas);


grįžti 0;
}

Išvada

Šiame straipsnyje mes trumpai aptarėme XML ir apžvelgė tris skirtingus pavyzdžius, kaip analizuoti XML naudojant C ++. „TinyXML“ yra minimalistinė biblioteka, skirta XML duomenims analizuoti. Dauguma programuotojų XML duomenims analizuoti dažniausiai naudoja „RapidXML“ arba „PugiXML“.