Ebben a cikkben az XML C ++ programozási nyelven történő elemzésének módjáról fogunk beszélni. Több példát fogunk látni az XML elemzési mechanizmus megértésére a C ++ nyelven.
Mi az XML?
XML jelölőnyelv, és főként adatok szervezett tárolására és továbbítására szolgál. Az XML az eXtensible Markup Language rövidítése. Nagyon hasonló a HTML -hez. Az XML teljes mértékben az adatok tárolására és továbbítására összpontosít, míg a HTML az adatok böngészőben történő megjelenítésére szolgál.
Minta XML fájl/XML szintaxis
Íme egy minta XML fájl:
változat='1.0' kódolás='utf-8'?>
>
A HTML-től eltérően ez egy címkeorientált jelölőnyelv, és saját címkét határozhatunk meg egy XML fájlban. A fenti példában számos felhasználó által definiált címke található, mint például. Minden címke a megfelelő végcímkével rendelkezik. a befejező címke. Annyi felhasználó által definiált címkét definiálhatunk, ahány adatot szeretnénk rendezni.
Könyvtárak elemzése C ++ nyelven:
A legtöbb magas szintű programozási nyelvben különféle könyvtárak vannak az XML adatok elemzésére. A C ++ sem kivétel. Íme a legnépszerűbb C ++ könyvtárak az XML adatok elemzéséhez:
- 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 konvertálást. Használhatja a PugiXML-t, ha az UTF-16 dokumentumot UTF-8-ra szeretné konvertálni. A TinyXML egy minimális verzió az XML adatok elemzésére, és nem olyan gyors, mint az előző kettő. Ha csak elvégezni szeretné a munkát, és nem törődik a sebességgel, akkor válassza a TinyXML -t.
Példák
Most alapvető ismereteink vannak az XML és XML elemző könyvtárakról a C ++ nyelven. Nézzünk most néhány példát az xml fájl C ++ nyelvű elemzésére:
- 1. példa: XML elemzése C ++ nyelven RapidXML használatával
- 2. példa: XML elemzése C ++ nyelven PugiXML használatával
- 3. példa: XML elemzése C ++ nyelven TinyXML használatával
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 kell elemezni az xml -t a RapidXML könyvtár használatával C ++ nyelven. Itt található a bemeneti XML fájl (sample.xml):
változat='1.0' kódolás='utf-8'?>>
Célunk a fenti XML fájl C ++ használatával történő elemzése. Itt található a C ++ program az XML adatok RapidXML használatával történő elemzésére. A RapidXML könyvtárat innen töltheti le Itt .
#befoglalni#befoglalni
#befoglalni
#include 'rapidxml.hpp'
segítségével névtérórák;
segítségével névtérrapidxml;
xml_dokumentumdok
xml_node *root_node= NULLA;
intfő-(üres)
{
költség << ' nTanulóim adatainak elemzése (sample.xml) ..... ' <<endl;
// Olvassa el a sample.xml fájlt
ifstream a fájl('sample.xml');
vektor<char>puffer((istreambuf_iterator<char>(a fájl)), istreambuf_iterator<char>());
puffer.visszavet(' 0');
// A puffer elemzése
dok.elemezni<0>(&puffer[0]);
// Keresse meg a gyökércsomópontot
root_node=dok.first_node('MyStudentsData');
// Ismételje meg a diákcsomópontokat
számára (xml_node *tanuló_csomópont=root_node->first_node('Diák');tanuló_csomópont;tanuló_csomópont=tanuló_csomópont->next_sibling())
{
költség << ' nDiák típusa = ' <<tanuló_csomópont->first_attribute('tanuló_típus')->érték();
költség <<endl;
// Interakció a diáknevek felett
számára(xml_node *tanuló_neve_csomópont=tanuló_csomópont->first_node('Név');tanuló_neve_csomópont;tanuló_neve_csomópont=tanuló_neve_csomópont->next_sibling())
{
költség << 'Diák neve =' <<tanuló_neve_csomópont->érték();
költség <<endl;
}
költség <<endl;
}
Visszatérés 0;
}
2. példa: XML elemzése C ++ nyelven PugiXML használatával
Ebben a példaprogramban bemutatjuk, hogyan kell elemezni az xml -t a PugiXML könyvtár használatával C ++ nyelven. Itt található a bemeneti XML fájl (sample.xml):
változat='1.0' kódolás='UTF-8' önálló='nem' ?>>
Ebben a példaprogramban bemutatjuk, hogyan kell elemezni az xml -t a pugixml könyvtár használatával C ++ nyelven. A PugiXML könyvtárat innen töltheti le Itt .
#befoglalni#include 'pugixml.hpp'
segítségével névtérórák;
segítségével névtérpugi;
intfő-()
{
költség << ' nAz alkalmazottak adatainak elemzése (sample.xml) ..... n n';
xml_document doc;
// az XML fájl betöltése
ha (!dok.load_file('sample.xml')) Visszatérés -1;
xml_node eszközök=dok.gyermek('Alkalmazottak adatai').gyermek('Munkavállalók');
számára (xml_node_iterator meg=eszközöket.kezdődik();azt!=eszközöket.vége(); ++azt)
{
költség << 'Alkalmazottak:';
számára (xml_attribute_iterator ait=azt->attributes_begin();tartozó!=azt->attributes_end(); ++tartozó)
{
költség << '' <<tartozó->név() << '=' <<tartozó->érték();
}
költség <<endl;
}
költség <<endl;
Visszatérés 0;
}
3. példa: XML elemzése C ++ nyelven TinyXML használatával
Ebben a példaprogramban bemutatjuk, hogyan kell elemezni az xml -t a TinyXML könyvtár használatával C ++ nyelven. Itt található a bemeneti XML fájl (sample.xml):
változat='1.0' kódolás='utf-8'?>>
Ebben a példaprogramban bemutatjuk, hogyan kell elemezni az xml -t a TinyXML könyvtár használatával C ++ nyelven. A TinyXML könyvtárat innen töltheti le Itt .
#befoglalni#befoglalni
#befoglalni
#include 'tinyxml2.cpp'
segítségével névtérórák;
segítségével névtértinyxml2;
intfő-(üres)
{
költség << ' nTanulóim adatainak elemzése (sample.xml) ..... ' <<endl;
// Olvassa el a sample.xml fájlt
XMLDokumentum dok;
dok.LoadFile( 'sample.xml' );
const char*cím=dok.FirstChildElement( 'MyStudentsData' )->FirstChildElement( 'Diák' )->GetText();
printf( 'Diák neve: %s n', cím);
XMLText*textNode=dok.UtolsóGyermekElem( 'MyStudentsData' )->UtolsóGyermekElem( 'Diák' )->Első gyerek()->Üzenni();
cím=textNode->Érték();
printf( 'Diák neve: %s n', cím);
Visszatérés 0;
}
Következtetés
Ebben a cikkben röviden tárgyaltunk XML és megvizsgált három különböző példát az XML elemzésére C ++ nyelven. A TinyXML egy minimalista könyvtár az XML adatok elemzésére. A legtöbb programozó főként a RapidXML -t vagy a PugiXML -t használja az XML adatok elemzéséhez.