Š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“?>
>
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:
- „RapidXML“
- PugiXML
- „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“?>>
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' ?>>
Š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“?>>
Š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“.