Ebben a cikkben megvitatjuk az XML elemzését C ++ programozási nyelven. Számos működő példát fogunk látni az XML elemzési mechanizmus megértéséhez C-ben++.
Mi az XML?
Az XML egy jelölő nyelv, és főleg szervezett módon tárolja és továbbítja az adatokat. Az XML az eXtensible Markup Language rövidítést jelenti. Nagyon hasonlít a HTML-hez. Az XML teljes mértékben az adatok tárolására és átadására összpontosít, míg a HTML-t használják az adatok megjelenítésére a böngészőben.
Minta XML fájl / XML szintaxis
Itt van egy minta XML fájl:
A HTML-től eltérően ez egy címkeorientált jelölőnyelv, és saját címkét meghatározhatunk egy XML fájlban. A fenti példában számos felhasználó által definiált címke van, például:
A könyvtárak elemzése C ++ nyelven:
Különböző könyvtárak vannak az XML-adatok elemzésére a legtöbb magas szintű programozási nyelvben. A C ++ nem kivétel. Az XML-adatok elemzéséhez a legnépszerűbb C ++ könyvtárak találhatók:
- RapidXML
- PugiXML
- TinyXML
Ahogy a neve is sugallja, a RapidXML elsősorban a sebességre összpontosít, és ez egy DOM stílusú elemző könyvtár. A PugiXML támogatja az Unicode konverziót. Érdemes használni a PugiXML-t, ha az UTF-16 doc-ot UTF-8-ba szeretné konvertálni. A TinyXML egy minimális verzió az XML adatok elemzéséhez, és nem olyan gyorsan, mint az előző kettőhöz képest. Ha csak el akarja végezni a munkát, és nem érdekel a sebesség, választhatja a TinyXML-t.
Példák
Most alapvető ismereteink vannak az XML és XML elemző könyvtárakról a C-ben++. Most nézzünk meg néhány példát az xml fájl elemzésére a C ++ nyelven:
- 1. példa: XML elemzése C ++ nyelven RapidXML használatával
- 2. példa: XML elemzése C ++ nyelven a PugiXML használatával
- 3. példa: XML elemzése C ++ nyelven a TinyXML segítségével
Ezen példák mindegyikében a megfelelő könyvtárakat használjuk egy minta XML fájl elemzésére.
1. példa: XML elemzése C ++ nyelven RapidXML használatával
Ebben a példaprogramban bemutatjuk, hogyan elemezzük az xml-et a RapidXML könyvtár segítségével a C-ben++. Itt van a bemeneti XML fájl (minta.xml):
Célunk a fenti XML fájl elemzése a C használatával++. Itt található a C ++ program az XML adatok elemzéséhez a RapidXML segítségével. A RapidXML könyvtárat innen töltheti le.
#include#include
#include
#include "rapidxml.hpp "
névtér használata std;
névtér gyorsxml használata;
xml_document <> doc
xml_node <> * root_node = NULL;
int main (érvénytelen)
cout << "\nParsing my students data (sample.xml)… " << endl;
// Olvassa el a mintát.xml fájl
ifstream theFile ("minta.xml ");
vektor
puffer.push_back ('\ 0');
// A puffer elemzése
doc.elemzés<0>(& puffer [0]);
// Tudja meg a gyökércsomópontot
root_csomópont = doc.first_node ("SajátStudentsData");
// A hallgatói csomópontok felett iterálunk
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 ("hallgatótípus") -> érték ();
cout << endl;
// Interakció a diáknevek felett
for (xml_csomópont <> * hallgatónév_csomópont = tanuló_csomó-> első_csomópont ("Név"); hallgató_név_csomópont;
cout << "Student Name = " << student_name_node->érték();
cout << endl;
cout << endl;
visszatér 0;
2. példa: XML elemzése C ++ nyelven a PugiXML használatával
Ebben a példaprogramban bemutatjuk, hogyan elemezzük az xml-t a C-ben lévő PugiXML könyvtár segítségével++. Itt van a bemeneti XML fájl (minta.xml):
Ebben a példaprogramban bemutatjuk, hogyan elemezzük az xml-t a C-ben található pugixml könyvtár segítségével++. A PugiXML könyvtárat innen töltheti le.
#include#include "pugixml.hpp "
névtér használata std;
névtér használata pugi;
int main ()
cout << "\nParsing employees data (sample.xml)… \n\n";
xml_document doc;
// betölti az XML fájlt
ha (!doc.load_file ("minta.xml ")) return -1;
xml_node tools = doc.gyermek ("EmployeesData").gyermek ("Alkalmazottak");
for (xml_node_iterator it = eszközök.kezdődik(); azt != eszközök.vége (); ++ it)
cout << "Employees:";
for (xml_attribute_iterator ait = it-> attributes_begin (); ait != it-> attributes_end (); ++ ait)
cout << " " << ait->név() << "=" << ait->érték();
cout << endl;
cout << endl;
visszatér 0;
3. példa: XML elemzése C ++ nyelven a TinyXML segítségével
Ebben a példaprogramban bemutatjuk, hogyan elemezzük az xml-t a C TinyXML könyvtár segítségével++. Itt van a bemeneti XML fájl (minta.xml):
Ebben a példaprogramban bemutatjuk, hogyan elemezzük az xml-t a C TinyXML könyvtár segítségével++. A TinyXML könyvtárat innen töltheti le.
#include#include
#include
#include "tinyxml2.cpp "
névtér használata std;
névtér használata tinyxml2;
int main (érvénytelen)
cout << "\nParsing my students data (sample.xml)… " << endl;
// Olvassa el a mintát.xml fájl
XMLDocument doc;
doc.LoadFile ("minta.xml ");
const char * title = dok.FirstChildElement ("MyStudentsData") -> FirstChildElement ("Student") -> GetText ();
printf ("Tanuló neve:% s \ n", cím);
XMLText * textNode = doc.LastChildElement ("MyStudentsData") -> LastChildElement ("Student") -> FirstChild () -> ToText ();
title = textNode-> Érték ();
printf ("Tanuló neve:% s \ n", cím);
visszatér 0;
Következtetés
Ebben a cikkben röviden megvitattuk az XML-t, és három különböző példát kerestünk az XML elemzésének módjára C-ben++. A TinyXML egy minimalista könyvtár az XML adatok elemzéséhez. A legtöbb programozó elsősorban a RapidXML-t vagy a PugiXML-t használja az XML adatok elemzéséhez.