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:
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 “
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:
- RapidXML
- PugiXML
- 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 ++:
- Eksempel 1: Analyser XML i C ++ ved hjælp af RapidXML
- Eksempel 2: Analyser XML i C ++ ved hjælp af PugiXML
- Eksempel 3: Parse XML i C ++ ved hjælp af TinyXML
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):
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.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):
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.