Ako analyzovať XML v C ++

How Parse Xml C



V tomto článku sa budeme zaoberať tým, ako analyzovať XML v programovacom jazyku C ++. Uvidíme niekoľko pracovných príkladov na pochopenie mechanizmu analýzy XML v C ++.

Čo je XML?

XML je značkovací jazyk a používa sa hlavne na organizované ukladanie a prenos údajov. XML znamená eXtensible Markup Language. Je veľmi podobný HTML. XML je úplne zameraný na ukladanie a prenos údajov, zatiaľ čo HTML sa používa na zobrazenie údajov v prehliadači.







Ukážka syntaxe súboru XML/XML

Tu je ukážkový súbor XML:



verzia=„1,0“ kódovanie='utf-8'?>

>

typ_študenta='Čiastočný'>

>Tom>

>

typ_študenta='Na plný úväzok'>

>Drake>

>

>

Na rozdiel od HTML je to značkovací jazyk orientovaný na značky a vlastnú značku môžeme definovať v súbore XML. Vo vyššie uvedenom príklade máme niekoľko užívateľom definovaných značiek ako napr. Každá značka bude mať zodpovedajúcu koncovú značku. je koncová značka pre. Môžeme definovať toľko užívateľom definovaných značiek, koľko chceme organizovať údaje.



Analýza knižníc v C ++:

Vo väčšine programovacích jazykov na vysokej úrovni existuje niekoľko knižníc na analýzu údajov XML. C ++ nie je výnimkou. Tu sú najobľúbenejšie knižnice C ++ na analýzu údajov XML:





  1. RapidXML
  2. PugiXML
  3. TinyXML

Ako naznačuje názov, RapidXML je zameraný hlavne na rýchlosť a je to knižnica na analýzu štýlu DOM. PugiXML podporuje konverziu Unicode. Možno budete chcieť použiť PugiXML, ak chcete previesť dokument UTF-16 na UTF-8. TinyXML je minimálna verzia na analýzu údajov XML a nie je taká rýchla v porovnaní s predchádzajúcimi dvoma. Ak chcete prácu dokončiť a nestaráte sa o rýchlosť, môžete si vybrať TinyXML.

Príklady
Teraz máme základné znalosti o knižniciach analýzy XML a XML v jazyku C ++. Teraz sa pozrime na niekoľko príkladov na analýzu súboru xml v C ++:



  • Príklad 1: Analyzujte XML v C ++ pomocou programu RapidXML
  • Príklad 2: Analyzujte XML v C ++ pomocou PugiXML
  • Príklad 3: Analyzujte XML v C ++ pomocou TinyXML

V každom z týchto príkladov použijeme príslušné knižnice na analýzu vzorového súboru XML.

Príklad 1: Analyzujte XML v C ++ pomocou programu RapidXML

V tomto príklade programu ukážeme, ako analyzovať xml pomocou knižnice RapidXML v C ++. Tu je vstupný súbor XML (sample.xml):

verzia=„1,0“ kódovanie='utf-8'?>

>

typ_študenta='Čiastočný'>

>John>

>

typ_študenta='Na plný úväzok'>

>Sean>

>

typ_študenta='Čiastočný'>

>Sarah>

>

>

Našim cieľom je analyzovať vyššie uvedený súbor XML pomocou C ++. Tu je program C ++ na analýzu údajov XML pomocou programu RapidXML. Knižnicu RapidXML si môžete stiahnuť z Tu .

#zahrnúť
#zahrnúť
#zahrnúť
#include 'rapidxml.hpp'

použitím priestor mienhodiny;
použitím priestor mienrapidxml;


xml_documentdoc
xml_node *root_node= NULOVÝ;

intHlavná(prázdny)
{
náklady << ' nAnalýza údajov mojich študentov (sample.xml) ..... ' <<endl;

// Prečítajte si súbor sample.xml
ifstream súbor('sample.xml');
vektor<char>nárazník((istreambuf_iterator<char>(súbor)), istreambuf_iterator<char>());
nárazník.push_back(' 0');

// Analyzujte vyrovnávaciu pamäť
doc.analyzovať<0>(&nárazník[0]);

// Zistite koreňový uzol
root_node=doc.first_node(„MyStudentsData“);

// Iterujte nad študentskými uzlami
pre (xml_node *student_node=root_node->first_node('Študent');student_node;student_node=student_node->next_sibling())
{
náklady << ' nTyp študenta = ' <<student_node->first_attribute('student_type')->hodnotu();
náklady <<endl;

// Interate cez mená študentov
pre(xml_node *meno_ študenta_uzol=student_node->first_node('Názov');meno_ študenta_uzol;meno_ študenta_uzol=meno_ študenta_uzol->next_sibling())
{
náklady << 'Študentské meno =' <<meno_ študenta_uzol->hodnotu();
náklady <<endl;
}
náklady <<endl;
}

vrátiť sa 0;
}

Príklad 2: Analyzujte XML v C ++ pomocou PugiXML

V tomto príklade programu ukážeme, ako analyzovať xml pomocou knižnice PugiXML v C ++. Tu je vstupný súbor XML (sample.xml):

verzia=„1,0“ kódovanie=„UTF-8“ samostatný='nie' ?>

FormatVersion='1'>

>

názov='John' Napíšte='Čiastočný'>

>

názov='Sean' Napíšte='Na plný úväzok'>

>

názov=„Sarah“ Napíšte='Čiastočný'>

>

>

>

V tomto príklade programu ukážeme, ako analyzovať xml pomocou knižnice pugixml v C ++. Knižnicu PugiXML si môžete stiahnuť z Tu .

#zahrnúť
#include 'pugixml.hpp'

použitím priestor mienhodiny;
použitím priestor mienpugi;

intHlavná()
{
náklady << ' nAnalýza údajov o zamestnancoch (sample.xml) ... n n';


xml_document doc;

// načítanie súboru XML
keby (!doc.load_file('sample.xml')) vrátiť sa -1;

xml_node nástroje=doc.dieťa(„Údaje o zamestnancoch“).dieťa(„Zamestnanci“);


pre (xml_node_iterator to=nástroje.začať();to!=nástroje.koniec(); ++to)
{
náklady << „Zamestnanci:“;

pre (xml_attribute_iterator ait=to->attribute_begin();príslušnosť!=to->attributes_end(); ++príslušnosť)
{
náklady << '' <<príslušnosť->názov() << '=' <<príslušnosť->hodnotu();
}

náklady <<endl;
}

náklady <<endl;

vrátiť sa 0;

}

Príklad 3: Analyzujte XML v C ++ pomocou TinyXML

V tomto príklade programu ukážeme, ako analyzovať xml pomocou knižnice TinyXML v C ++. Tu je vstupný súbor XML (sample.xml):

verzia=„1,0“ kódovanie='utf-8'?>

>

>John>

>Sean>

>Sarah>

>

V tomto príklade programu ukážeme, ako analyzovať xml pomocou knižnice TinyXML v C ++. Knižnicu TinyXML si môžete stiahnuť z Tu .

#zahrnúť
#zahrnúť
#zahrnúť
#include 'tinyxml2.cpp'

použitím priestor mienhodiny;
použitím priestor mientinyxml2;


intHlavná(prázdny)
{
náklady << ' nAnalýza údajov mojich študentov (sample.xml) ..... ' <<endl;

// Prečítajte si súbor sample.xml
Dokument XMLDoc;
doc.LoadFile( 'sample.xml' );

konšt char*titul=doc.FirstChildElement( „MyStudentsData“ )->FirstChildElement( 'Študent' )->GetText();
printf( „Meno študenta: %s n', názov);


XMLText*textNode=doc.LastChildElement( „MyStudentsData“ )->LastChildElement( 'Študent' )->FirstChild()->Do textu();
titul=textNode->Hodnota();
printf( „Meno študenta: %s n', názov);


vrátiť sa 0;
}

Záver

V tomto článku sme stručne diskutovali XML a pozrel sa na tri rôzne príklady, ako analyzovať XML v C ++. TinyXML je minimalistická knižnica na analýzu údajov XML. Väčšina programátorov používa na analýzu údajov XML predovšetkým RapidXML alebo PugiXML.