C ++

Jak analyzovat XML v C ++

Jak analyzovat XML v C ++

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:




Tom


Kačer

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 „“. Každá značka bude mít odpovídající koncovou značku. "„Je koncová značka pro„“. Můžeme definovat tolik uživatelsky definovaných značek, kolik chceme uspořádat data.

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:

  1. RapidXML
  2. PugiXML
  3. 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 ++:

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):




John


Sean


Sarah

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 buffer ((istreambuf_iterator(theFile)), istreambuf_iterator());
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):



John
Sean
Sarah

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.

ssh Jak povolit dvoufaktorové ověřování pro SSH ve Fedora Linux
Jak povolit dvoufaktorové ověřování pro SSH ve Fedora Linux
Ve světě informačních technologií je dnes bezpečnost velkým problémem. Každý den jsou podnikány nové a sofistikované útoky. Správci systému používají ...
ssh Jak najít veřejný klíč SSH
Jak najít veřejný klíč SSH
V některých situacích možná budete muset zobrazit obsah svých klíčů SSH. Možná budete muset zobrazit obsah veřejného klíče a přidat jej ke vzdáleným s...
ssh Jak používat příkaz ssh-copy-id
Jak používat příkaz ssh-copy-id
Příkaz ssh-copy-id je jednoduchý nástroj, který umožňuje nainstalovat klíč SSH na autorizované klíče vzdáleného serveru. Tento příkaz usnadňuje přihlá...