V tomto článku budeme diskutovat o tom, jak analyzovat XML v programovacím jazyce C ++. Uvidíme několik pracovních příkladů, abychom pochopili mechanismus syntaktické analýzy XML v jazyce C++.
Co je XML?
XML je značkovací jazyk a používá se hlavně k organizovanému ukládání a přenosu dat. XML je zkratka pro eXtensible Markup Language. Je to velmi podobné HTML. XML je zcela zaměřen na ukládání a přenos dat, zatímco HTML se používá pro zobrazení dat v prohlížeči.
Ukázkový soubor XML / syntaxe XML
Zde je ukázkový soubor XML:
Na rozdíl od HTML se jedná o značkovací jazyk orientovaný na tagy a my můžeme definovat vlastní tag v souboru XML. Ve výše uvedeném příkladu máme několik uživatelem definovaných značek, například „
Analýza knihoven v C ++:
Existují různé knihovny pro analýzu dat XML ve většině programovacích jazyků na vysoké úrovni. C ++ není výjimkou. Zde jsou nejoblíbenější knihovny C ++ pro analýzu dat XML:
- RapidXML
- PugiXML
- TinyXML
Jak název napovídá, RapidXML je zaměřen hlavně na rychlost a je to knihovna pro analýzu stylu DOM. PugiXML podporuje převod Unicode. Možná budete chtít použít PugiXML, pokud chcete převést dokument UTF-16 na UTF-8. TinyXML je minimální verze pro analýzu dat XML a není tak rychlá ve srovnání s předchozími dvěma. Pokud chcete práci dokončit a nestaráte se o rychlost, můžete zvolit TinyXML.
Příklady
Nyní máme základní znalosti o XML a knihovnách XML pro analýzu v C++. Podívejme se nyní na několik příkladů k analýze souboru XML v C ++:
- Příklad 1: Analýza XML v C ++ pomocí RapidXML
- Příklad 2: Analýza XML v C ++ pomocí PugiXML
- Příklad 3: Analyzujte XML v C ++ pomocí TinyXML
V každém z těchto příkladů použijeme příslušné knihovny k analýze ukázkového souboru XML.
Příklad 1: Analyzujte XML v C ++ pomocí RapidXML
V tomto ukázkovém programu si ukážeme, jak analyzovat xml pomocí knihovny RapidXML v jazyce C++. Zde je vstupní soubor XML (ukázka.xml):
Naším cílem je zde analyzovat výše uvedený soubor XML pomocí C++. Tady je program C ++ pro analýzu dat XML pomocí RapidXML. Knihovnu RapidXML si můžete stáhnout zde.
#zahrnout#zahrnout
#zahrnout
#include „rapidxml.hpp "
pomocí jmenného prostoru std;
pomocí oboru názvů rapidxml;
xml_document <> doc
xml_node <> * root_node = NULL;
int main (neplatný)
cout << "\nParsing my students data (sample.xml)… " << endl;
// Přečtěte si ukázku.xml soubor
ifstream theFile ("ukázka.xml ");
vektor
nárazník.push_back ('\ 0');
// Analyzujte vyrovnávací paměť
doc.analyzovat<0>(& vyrovnávací paměť [0]);
// Zjistěte kořenový uzel
root_node = doc.first_node ("MyStudentsData");
// Iterace nad uzly studentů
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 ("student_type") -> value ();
cout << endl;
// Interate over the Student Jména
for (xml_node <> * student_name_node = student_node-> first_node ("Name"); student_name_node; student_name_node = student_name_node-> next_sibling ())
cout << "Student Name = " << student_name_node->hodnota();
cout << endl;
cout << endl;
návrat 0;
Příklad 2: Analyzovat XML v C ++ pomocí PugiXML
V tomto ukázkovém programu si ukážeme, jak analyzovat xml pomocí knihovny PugiXML v jazyce C++. Zde je vstupní soubor XML (ukázka.xml):
V tomto ukázkovém programu si ukážeme, jak analyzovat xml pomocí knihovny pugixml v jazyce C++. Knihovnu PugiXML si můžete stáhnout zde.
#zahrnout#include „pugixml.hpp "
pomocí jmenného prostoru std;
pomocí jmenného prostoru pugi;
int main ()
cout << "\nParsing employees data (sample.xml)… \n\n";
xml_document doc;
// načte soubor XML
pokud (!doc.load_file ("ukázka.xml ")) návrat -1;
xml_node tools = doc.dítě („ZaměstnanciData“).dítě („zaměstnanci“);
for (xml_node_iterator it = tools.začít(); to != nástroje.konec(); ++ it)
cout << "Employees:";
for (xml_attribute_iterator ait = it-> attributes_begin (); ait != it-> attributes_end (); ++ ait)
cout << " " << ait->název() << "=" << ait->hodnota();
cout << endl;
cout << endl;
návrat 0;
Příklad 3: Analyzujte XML v C ++ pomocí TinyXML
V tomto ukázkovém programu si ukážeme, jak analyzovat xml pomocí knihovny TinyXML v jazyce C++. Zde je vstupní soubor XML (ukázka.xml):
V tomto ukázkovém programu si ukážeme, jak analyzovat xml pomocí knihovny TinyXML v jazyce C++. Knihovnu TinyXML si můžete stáhnout zde.
#zahrnout#zahrnout
#zahrnout
#include „tinyxml2.CPP "
pomocí jmenného prostoru std;
pomocí jmenného prostoru tinyxml2;
int main (neplatný)
cout << "\nParsing my students data (sample.xml)… " << endl;
// Přečtěte si ukázku.xml soubor
XMLDocument doc;
doc.LoadFile ("ukázka.xml ");
const char * title = doc.FirstChildElement ("MyStudentsData") -> FirstChildElement ("Student") -> GetText ();
printf ("Jméno studenta:% s \ n", název);
XMLText * textNode = doc.LastChildElement ("MyStudentsData") -> LastChildElement ("Student") -> FirstChild () -> ToText ();
title = textNode-> Value ();
printf ("Jméno studenta:% s \ n", název);
návrat 0;
Závěr
V tomto článku jsme stručně diskutovali o XML a podívali jsme se na tři různé příklady, jak analyzovat XML v jazyce C++. TinyXML je minimalistická knihovna pro analýzu dat XML. Většina programátorů používá k analýze dat XML hlavně RapidXML nebo PugiXML.