C ++

XML n jäsentäminen C ++ -sovelluksessa

XML n jäsentäminen C ++ -sovelluksessa

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:




Tom


Drake

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”. Jokaisella tagilla on vastaava lopputunniste. "”On lopputunniste sanalle“”. Voimme määritellä niin monta käyttäjän määrittelemää tunnistetta kuin haluamme järjestää tiedot.

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:

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

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




John


Sean


Sarah

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



John
Sean
Sarah

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.

OpenTTD vs Simutrans
Creating your own transport simulation can be fun, relaxing and extremely enticing. That's why you need to make sure that you try out as many games as...
OpenTTD Tutorial
OpenTTD is one of the most popular business simulation games out there. In this game, you need to create a wonderful transportation business. However,...
SuperTuxKart for Linux
SuperTuxKart is a great title designed to bring you the Mario Kart experience free of charge on your Linux system. It is pretty challenging and fun to...