Tässä artikkelissa aiomme keskustella XML: n jäsentämisestä C ++ - ohjelmointikielellä. Näemme useita toimivia esimerkkejä XML-jäsentämismekanismin ymmärtämiseksi C: ssä++.
Mikä on XML?
XML on merkintäkieli, ja sitä käytetään pääasiassa tietojen tallentamiseen ja siirtämiseen järjestetyllä tavalla. XML on lyhenne sanoista eXtensible Markup Language. Se on hyvin samanlainen kuin HTML. XML on keskittynyt täysin tietojen tallentamiseen ja siirtämiseen, kun taas HTML: ää käytetään tietojen näyttämiseen selaimessa.
Esimerkki XML-tiedostosta / XML-syntaksista
Tässä on esimerkki XML-tiedostosta:
Toisin kuin HTML, se on tunnistekeskeinen merkintäkieli, ja voimme määrittää oman tagimme XML-tiedostossa. Yllä olevassa esimerkissä meillä on useita käyttäjän määrittelemiä tunnisteita, kuten
Kirjastojen jäsentäminen C ++:
XML-tietoja voidaan jäsentää useilla kirjastoilla useimmilla korkean tason ohjelmointikielillä. C ++ ei ole poikkeus. Tässä ovat suosituimmat C ++ -kirjastot XML-tietojen jäsentämiseen:
- RapidXML
- PugiXML
- TinyXML
Kuten nimestä voi päätellä, RapidXML keskittyy pääasiassa nopeuteen, ja se on DOM-tyylinen jäsentelykirjasto. PugiXML tukee Unicode-muunnosta. Voit halutessasi käyttää PugiXML: ää, jos haluat muuntaa UTF-16 doc: n UTF-8: ksi. TinyXML on vähimmäisversio XML-tietojen jäsentämiseen eikä niin nopeasti verrattuna kahteen edelliseen. Jos haluat vain saada työn valmiiksi etkä välitä nopeudesta, voit valita TinyXML: n.
Esimerkkejä
Nyt meillä on perustiedot X: n ja XML-jäsentämiskirjastoista C: ssä++. Katsotaan nyt muutama esimerkki XML-tiedoston jäsentämisestä C ++: ssa:
- Esimerkki 1: jäsennä XML C ++: ssa RapidXML: n avulla
- Esimerkki 2: jäsennä XML C ++: ssa PugiXML: n avulla
- Esimerkki 3: jäsennä XML C ++: ssa TinyXML: n avulla
Jokaisessa näistä esimerkeistä käytämme vastaavia kirjastoja jäsentämään XML-esimerkkitiedostoa.
Esimerkki 1: jäsennä XML C ++: ssa RapidXML: n avulla
Tässä esimerkkiohjelmassa osoitetaan, kuinka XML jäsennetään käyttämällä RapidXML-kirjastoa C: ssä++. Tässä on XML-syötetiedosto (näyte.xml):
Tavoitteenamme on jäsentää yllä oleva XML-tiedosto C: llä++. Tässä on C ++ -ohjelma XML-tietojen jäsentämiseen RapidXML: n avulla. Voit ladata RapidXML-kirjaston täältä.
#sisältää#sisältää
#sisältää
#include "quickxml.hpp "
käyttämällä nimitilaa vakio;
käyttämällä nimitilaa rapidxml;
xml_document <> asiak
xml_node <> * root_node = NULL;
int main (mitätön)
cout << "\nParsing my students data (sample.xml)… " << endl;
// Lue näyte.xml-tiedosto
ifstream theFile ("näyte.xml ");
vektori
puskuri.push_back ('\ 0');
// jäsennä puskuri
dos.jäsentää<0>(& puskuri [0]);
// Selvitä juurisolmu
juurisolmu = asiakirja.first_node ("Omat opiskelijatData");
// Toista yli opiskelijan solmut
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") -> arvo ();
cout << endl;
// Keskustele opiskelijoiden nimien kanssa
for (xml_solmu <> * opiskelijan_nimi_solmu = opiskelijansolmu-> ensimmäinen_solmu ("nimi"); opiskelijan_nimi_solmu; opiskelijan_nimi_solmu = opiskelijan_nimi_solmu-> seuraava_sibling ())
cout << "Student Name = " << student_name_node->arvo();
cout << endl;
cout << endl;
paluu 0;
Esimerkki 2: jäsennä XML C ++: ssa PugiXML: n avulla
Tässä esimerkkiohjelmassa näytetään, kuinka XML jäsennetään käyttämällä C: n PugiXML-kirjastoa++. Tässä on XML-syötetiedosto (näyte.xml):
Tässä esimerkkiohjelmassa osoitetaan, kuinka XML jäsennetään käyttämällä C: n pugixml-kirjastoa++. Voit ladata PugiXML-kirjaston täältä.
#sisältää#include "pugixml.hpp "
käyttämällä nimitilaa vakio;
käyttämällä nimitilaa pugi;
int main ()
cout << "\nParsing employees data (sample.xml)… \n\n";
xml_document doc;
// lataa XML-tiedosto
jos (!dos.load_file ("näyte.xml ")) return -1;
xml_node tools = asiakirja.lapsi ("EmployeesData").lapsi ("työntekijät");
for (xml_node_iterator it = työkalut.alkaa(); se != työkalut.loppu (); ++ se)
cout << "Employees:";
for (xml_attribute_iterator ait = it-> attributes_begin (); ait != it-> attributes_end (); ++ ait)
cout << " " << ait->nimi() << "=" << ait->arvo();
cout << endl;
cout << endl;
paluu 0;
Esimerkki 3: jäsennä XML C ++: ssa TinyXML: n avulla
Tässä esimerkkiohjelmassa osoitetaan, kuinka XML jäsennetään käyttämällä C: n TinyXML-kirjastoa++. Tässä on XML-syötetiedosto (näyte.xml):
Tässä esimerkkiohjelmassa osoitetaan, kuinka XML jäsennetään käyttämällä C: n TinyXML-kirjastoa++. Voit ladata TinyXML-kirjaston täältä.
#sisältää#sisältää
#sisältää
#include "tinyxml2.cpp "
käyttämällä nimitilaa vakio;
käyttämällä nimitilaa tinyxml2;
int main (mitätön)
cout << "\nParsing my students data (sample.xml)… " << endl;
// Lue näyte.xml-tiedosto
XMLDocument-asiakirja;
dos.LoadFile ("näyte.xml ");
const char * title = asiakirja.FirstChildElement ("MyStudentsData") -> FirstChildElement ("Student") -> GetText ();
printf ("Opiskelijan nimi:% s \ n", otsikko);
XMLText * textNode = asiakirja.LastChildElement ("MyStudentsData") -> LastChildElement ("Student") -> FirstChild () -> ToText ();
otsikko = textNode-> Arvo ();
printf ("Opiskelijan nimi:% s \ n", otsikko);
paluu 0;
Johtopäätös
Tässä artikkelissa olemme keskustelleet lyhyesti XML: stä ja tutkineet kolmea erilaista esimerkkiä XML: n jäsentämisestä C: ssä++. TinyXML on minimalistinen kirjasto XML-tietojen jäsentämiseen. Suurin osa ohjelmoijista käyttää pääasiassa RapidXML: ää tai PugiXML: ää XML-tietojen jäsentämiseen.