C ++

Hur man analyserar XML i C ++

Hur man analyserar XML i C ++

I den här artikeln ska vi diskutera hur man analyserar XML i C ++ programmeringsspråk. Vi kommer att se flera arbetsexempel för att förstå XML-analyseringsmekanismen i C++.

Vad är XML?

XML är ett markeringsspråk och används främst för att lagra och överföra data på ett organiserat sätt. XML står för eXtensible Markup Language. Det liknar mycket HTML. XML är helt fokuserad på lagring och överföring av data, medan HTML används för att visa data i webbläsaren.

Ett exempel på XML-fil / XML-syntax

Här är ett exempel på en XML-fil:




Tom


Ankbonde

Till skillnad från HTML är det ett tag-orienterat markeringsspråk, och vi kan definiera vår egen tagg i en XML-fil. I exemplet ovan har vi flera användardefinierade taggar som “”. Varje tagg har motsvarande sluttagg. “”Är sluttaggen för“”. Vi kan definiera så många användardefinierade taggar som vi vill organisera data.

Analysera bibliotek i C ++:

Det finns olika bibliotek för att analysera XML-data på de flesta programmeringsspråk på hög nivå. C ++ är inte ett undantag. Här är de mest populära C ++ - biblioteken för att analysera XML-data:

  1. RapidXML
  2. PugiXML
  3. TinyXML

Som namnet antyder är RapidXML huvudsakligen inriktad på hastighet, och det är ett analyseringsbibliotek i DOM-stil. PugiXML stöder Unicode-konvertering. Du kanske vill använda PugiXML om du vill konvertera UTF-16 doc till UTF-8. TinyXML är en absolut version för att analysera XML-data och inte så snabbt jämfört med de två föregående. Om du bara vill göra jobbet och inte bryr dig om hastigheten kan du välja TinyXML.

Exempel
Nu har vi en grundläggande förståelse för XML- och XML-analyseringsbibliotek i C++. Låt oss nu titta på ett par exempel för att analysera xml-filen i C ++:

I vart och ett av dessa exempel kommer vi att använda respektive bibliotek för att analysera ett exempel på en XML-fil.

Exempel-1: Analysera XML i C ++ med RapidXML

I detta exempelprogram kommer vi att demonstrera hur man analyserar xml med RapidXML-biblioteket i C++. Här är XML-inmatningsfilen (exempel.xml):




John


Sean


Sarah

Vårt mål här är att analysera ovanstående XML-fil med hjälp av C++. Här är C ++ - programmet för att analysera XML-data med RapidXML. Du kan ladda ner RapidXML-biblioteket härifrån.

#omfatta
#omfatta
#omfatta
#include "rapidxml.hpp "
använder namnrymd std;
med hjälp av namespace rapidxml;
xml_document <> doc
xml_node <> * root_node = NULL;
int main (ogiltigt)

cout << "\nParsing my students data (sample.xml)… " << endl;
// Läs provet.xml-fil
ifstream theFile ("exempel.xml ");
vektor buffert ((istreambuf_iterator(theFile)), istreambuf_iterator());
buffert.push_back ('\ 0');
// Analysera bufferten
dok.analysera<0>(& buffert [0]);
// Ta reda på rotnoden
root_node = doc.first_node ("MyStudentsData");
// Iterera över studentnoderna
för (xml_node <> * student_node = root_node-> first_node ("Student"); student_node; student_node = student_node-> next_sibling ())

cout << "\nStudent Type =   " << student_node->första_attribut ("student_type") -> värde ();
cout << endl;
// Interatera över studentnamnen
för (xml_node <> * studentnamn_namn = studentnamn-> första_nod ("Namn"); studentnamn_namn; studentnamn_nod = studentnamn_nod-> nästa_sibling ())

cout << "Student Name =   " << student_name_node->värde();
cout << endl;

cout << endl;

returnera 0;

Exempel 2: Analysera XML i C ++ med PugiXML

I det här exempelprogrammet kommer vi att visa hur man analyserar xml med PugiXML-biblioteket i C++. Här är XML-inmatningsfilen (exempel.xml):











I detta exempelprogram kommer vi att visa hur man analyserar xml med hjälp av pugixml-biblioteket i C++. Du kan ladda ner PugiXML-biblioteket härifrån.

#omfatta
#include "pugixml.hpp "
använder namnrymd std;
använder namnrymd pugi;
int main ()

cout << "\nParsing employees data (sample.xml)… \n\n";
xml_document doc;
// ladda XML-filen
om (!dok.load_file ("exempel.xml ")) return -1;
xml_node-verktyg = doc.barn ("StaffData").barn ("anställda");
för (xml_node_iterator it = verktyg.Börja(); Det != verktyg.slutet(); ++ det)

cout << "Employees:";
för (xml_attribute_iterator ait = it-> attribut_begin (); ait != it-> attribut_end (); ++ ait)

cout << " " << ait->namn() << "=" << ait->värde();

cout << endl;

cout << endl;
returnera 0;

Exempel 3: Analysera XML i C ++ med TinyXML

I detta exempelprogram kommer vi att visa hur man analyserar xml med hjälp av TinyXML-biblioteket i C++. Här är XML-inmatningsfilen (exempel.xml):



John
Sean
Sarah

I detta exempelprogram kommer vi att visa hur man analyserar xml med hjälp av TinyXML-biblioteket i C++. Du kan ladda ner TinyXML-biblioteket härifrån.

#omfatta
#omfatta
#omfatta
#include "tinyxml2.cpp "
använder namnrymd std;
med hjälp av namespace tinyxml2;
int main (ogiltigt)

cout << "\nParsing my students data (sample.xml)… " << endl;
// Läs provet.xml-fil
XMLDocument-dokument;
dok.LoadFile ("exempel.xml ");
const char * title = doc.FirstChildElement ("MyStudentsData") -> FirstChildElement ("Student") -> GetText ();
printf ("Studentnamn:% s \ n", titel);
XMLText * textNode = doc.LastChildElement ("MyStudentsData") -> LastChildElement ("Student") -> FirstChild () -> ToText ();
title = textNode-> Value ();
printf ("Studentnamn:% s \ n", titel);
returnera 0;

Slutsats

I den här artikeln har vi kort diskuterat XML och tittat på tre olika exempel på hur man analyserar XML i C++. TinyXML är ett minimalistiskt bibliotek för att analysera XML-data.  De flesta av programmerarna använder huvudsakligen RapidXML eller PugiXML för att analysera XML-data.

Portar med öppen källkod för kommersiella spelmotorer
Gratis, öppen källkod och plattformsmekaniska rekreationer kan användas för att spela gamla såväl som några av de ganska senaste speltitlarna. I den h...
Bästa kommandoradsspel för Linux
Kommandoraden är inte bara din största allierade när du använder Linux, det kan också vara källan till underhållning eftersom du kan använda den för a...
Bästa Gamepad Mapping Apps för Linux
Om du gillar att spela spel på Linux med en gamepad istället för ett typiskt tangentbord och musinmatningssystem, finns det några användbara appar för...