C ++

Sådan analyseres XML i C ++

Sådan analyseres XML i C ++

I denne artikel skal vi diskutere, hvordan man parser XML i C ++ programmeringssprog. Vi vil se flere arbejdseksempler for at forstå XML-parseringsmekanismen i C++.

Hvad er XML?

XML er et markup-sprog og bruges hovedsageligt til lagring og overførsel af data på en organiseret måde. XML står for eXtensible Markup Language. Det ligner meget HTML. XML er helt fokuseret på lagring og overførsel af data, mens HTML bruges til at vise data i browseren.

En prøve XML-fil / XML-syntaks

Her er en XML-prøveeksempel:




Tom


Drake

I modsætning til HTML er det et tagorienteret markup-sprog, og vi kan definere vores eget tag i en XML-fil. I ovenstående eksempel har vi flere brugerdefinerede tags som “”. Hvert tag har det tilsvarende sluttag. “”Er slutmærket for“”. Vi kan definere så mange brugerdefinerede tags, som vi vil organisere dataene.

Analyse af biblioteker i C ++:

Der er forskellige biblioteker til at analysere XML-data på de fleste programmeringssprog på højt niveau. C ++ er ikke en undtagelse. Her er de mest populære C ++ - biblioteker til at analysere XML-data:

  1. RapidXML
  2. PugiXML
  3. TinyXML

Som navnet antyder, er RapidXML hovedsageligt fokuseret på hastighed, og det er et parsingbibliotek i DOM-stil. PugiXML understøtter Unicode-konvertering. Det kan være en god idé at bruge PugiXML, hvis du vil konvertere UTF-16 doc til UTF-8. TinyXML er en absolut version til at analysere XML-data og ikke så hurtig sammenlignet med de to foregående. Hvis du bare vil få arbejdet færdigt og ligeglad med hastigheden, kan du vælge TinyXML.

Eksempler
Nu har vi en grundlæggende forståelse af XML- og XML-parseringsbiblioteker i C++. Lad os nu se på et par eksempler til at analysere xml-filen i C ++:

I hvert af disse eksempler bruger vi de respektive biblioteker til at analysere en prøve XML-fil.

Eksempel 1: Analyser XML i C ++ ved hjælp af RapidXML

I dette eksempelprogram demonstrerer vi, hvordan man analyserer xml ved hjælp af RapidXML-biblioteket i C++. Her er XML-inputfilen (prøve.xml):




John


Sean


Sarah

Vores mål her er at analysere ovenstående XML-fil ved hjælp af C++. Her er C ++ - programmet til at analysere XML-data ved hjælp af RapidXML. Du kan downloade RapidXML-biblioteket herfra.

#omfatte
#omfatte
#omfatte
#include "rapidxml.hpp "
ved hjælp af namespace std;
ved hjælp af namespace rapidxml;
xml_document <> dok
xml_node <> * root_node = NULL;
int main (ugyldigt)

cout << "\nParsing my students data (sample.xml)… " << endl;
// Læs prøven.xml-fil
ifstream theFile ("prøve.xml ");
vektor buffer ((istreambuf_iterator(theFile)), istreambuf_iterator());
buffer.push_back ('\ 0');
// Parse bufferen
dok.parse<0>(& buffer [0]);
// Find ud af rodnoden
root_node = doc.first_node ("MyStudentsData");
// Iterere over studenterknudepunkterne
til (xml_node <> * student_node = root_node-> first_node ("Student"); student_node; student_node = student_node-> next_sibling ())

cout << "\nStudent Type =   " << student_node->første_attribut ("student_type") -> værdi ();
cout << endl;
// Interate over the Student Navne
til (xml_node <> * student_navn_node = student_node-> første_node ("Navn"); student_navn_node; student_navn_node = elevnavn_node-> næste_søskende ())

cout << "Student Name =   " << student_name_node->værdi();
cout << endl;

cout << endl;

returnere 0;

Eksempel 2: Analyser XML i C ++ ved hjælp af PugiXML

I dette eksempelprogram vil vi demonstrere, hvordan man analyserer xml ved hjælp af PugiXML-biblioteket i C++. Her er XML-inputfilen (prøve.xml):











I dette eksempelprogram vil vi demonstrere, hvordan man analyserer xml ved hjælp af pugixml-biblioteket i C++. Du kan downloade PugiXML-biblioteket herfra.

#omfatte
#include "pugixml.hpp "
ved hjælp af namespace std;
ved hjælp af navneområde pugi;
int main ()

cout << "\nParsing employees data (sample.xml)… \n\n";
xml_document doc;
// indlæs XML-filen
hvis (!dok.load_file ("prøve.xml ")) return -1;
xml_node-værktøjer = doc.barn ("Medarbejderdata").barn ("Medarbejdere")
til (xml_node_iterator it = værktøjer.begynde(); det != værktøjer.ende(); ++ det)

cout << "Employees:";
for (xml_attribute_iterator ait = it-> attribut_begin (); ait != it-> attributter_end (); ++ ait)

cout << " " << ait->navn() << "=" << ait->værdi();

cout << endl;

cout << endl;
returnere 0;

Eksempel 3: Parse XML i C ++ ved hjælp af TinyXML

I dette eksempelprogram vil vi demonstrere, hvordan man analyserer xml ved hjælp af TinyXML-biblioteket i C++. Her er XML-inputfilen (prøve.xml):



John
Sean
Sarah

I dette eksempelprogram vil vi demonstrere, hvordan man analyserer xml ved hjælp af TinyXML-biblioteket i C++. Du kan downloade TinyXML-biblioteket herfra.

#omfatte
#omfatte
#omfatte
#include "tinyxml2.cpp "
ved hjælp af namespace std;
ved hjælp af namespace tinyxml2;
int main (ugyldigt)

cout << "\nParsing my students data (sample.xml)… " << endl;
// Læs prøven.xml-fil
XMLDocument-dokument;
dok.LoadFile ("prøve.xml ");
const char * title = doc.FirstChildElement ("MyStudentsData") -> FirstChildElement ("Student") -> GetText ();
printf ("Elevens navn:% s \ n", titel);
XMLText * textNode = doc.LastChildElement ("MyStudentsData") -> LastChildElement ("Student") -> FirstChild () -> ToText ();
titel = textNode-> Værdi ();
printf ("Elevnavn:% s \ n", titel);
returnere 0;

Konklusion

I denne artikel har vi kort diskuteret XML og kigget på tre forskellige eksempler på, hvordan man kan analysere XML i C++. TinyXML er et minimalistisk bibliotek til analyse af XML-data.  De fleste af programmørerne bruger hovedsageligt RapidXML eller PugiXML til at analysere XML-data.

Mus Top 5 ergonomiske computermusprodukter til Linux
Top 5 ergonomiske computermusprodukter til Linux
Forårsager langvarig brug af computeren smerter i dit håndled eller fingre? Lider du af stive led og er konstant nødt til at ryste hænderne? Føler du ...
Mus Sådan ændres mus og touchpad-indstillinger ved hjælp af Xinput i Linux
Sådan ændres mus og touchpad-indstillinger ved hjælp af Xinput i Linux
De fleste Linux-distributioner leveres som standard med "libinput" -biblioteket til at håndtere inputhændelser på et system. Det kan behandle inputhæn...
Mus Remap dine museknapper forskelligt til anden software med X-Mouse Button Control
Remap dine museknapper forskelligt til anden software med X-Mouse Button Control
Måske har du brug for et værktøj, der kan ændre din muses kontrol med hver applikation, du bruger. Hvis dette er tilfældet, kan du prøve en applikatio...