В тази статия ще обсъдим как да анализираме XML в езика за програмиране C ++. Ще видим няколко работни примера за разбиране на механизма за синтактичен анализ на XML в C++.
Какво е XML?
XML е език за маркиране и се използва главно за съхраняване и прехвърляне на данни по организиран начин. XML означава eXtensible Markup Language. Той е много подобен на HTML. XML е изцяло фокусиран върху съхранението и прехвърлянето на данните, докато HTML се използва за показване на данните в браузъра.
Примерен XML файл / XML синтаксис
Ето примерен XML файл:
За разлика от HTML, той е ориентиран към маркери език за маркиране и ние можем да дефинираме собствения си маркер в XML файл. В горния пример имаме няколко дефинирани от потребителя маркери като „
Разбор на библиотеки в C ++:
Има различни библиотеки за анализиране на XML данни в повечето езици за програмиране на високо ниво. C ++ не е изключение. Ето най-популярните C ++ библиотеки за анализ на XML данни:
- RapidXML
- PugiXML
- TinyXML
Както подсказва името, RapidXML е фокусиран главно върху скоростта и е библиотека за разбор на DOM стил. PugiXML поддържа преобразуване на Unicode. Може да искате да използвате PugiXML, ако искате да конвертирате UTF-16 doc в UTF-8. TinyXML е минимална версия за анализ на XML данни и не е толкова бърза в сравнение с предишните две. Ако искате просто да свършите работата и не ви пука за скоростта, можете да изберете TinyXML.
Примери
Сега имаме основно разбиране за библиотеките за синтактичен анализ на XML и XML в C++. Нека сега разгледаме няколко примера за анализиране на xml файл в C ++:
- Пример-1: Анализирайте XML в C ++ с помощта на RapidXML
- Пример-2: Анализирайте XML в C ++ с помощта на PugiXML
- Пример-3: Анализирайте XML в C ++ с помощта на TinyXML
Във всеки от тези примери ще използваме съответните библиотеки, за да анализираме примерен XML файл.
Пример-1: Анализирайте XML в C ++ с помощта на RapidXML
В този пример на програма ще демонстрираме как да анализираме xml с помощта на RapidXML библиотека в C++. Ето входния XML файл (пример.xml):
Нашата цел тук е да анализираме горния XML файл с помощта на C++. Ето програмата C ++ за синтактичен анализ на XML данни с помощта на RapidXML. Можете да изтеглите библиотеката RapidXML от Тук.
#include#include
#include
#include "rapidxml.hpp "
използване на пространство от имена std;
използване на пространство от имена rapidxml;
xml_document <> doc
xml_node <> * root_node = NULL;
int main (void)
Cout << "\nParsing my students data (sample.xml)… " << endl;
// Прочетете пробата.xml файл
ifstream theFile ("проба.xml ");
вектор
буфер.push_back ('\ 0');
// Анализиране на буфера
док.разбор<0>(& буфер [0]);
// Разберете коренния възел
root_node = документ.first_node ("MyStudentsData");
// Итерация над студентските възли
за (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;
// Интерес върху имената на студентите
за (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->стойност ();
Cout << endl;
Cout << endl;
връщане 0;
Пример-2: Анализирайте XML в C ++ с помощта на PugiXML
В този пример на програма ще демонстрираме как да анализираме xml с помощта на библиотеката PugiXML в C++. Ето входния XML файл (пример.xml):
В този пример на програма ще демонстрираме как да анализираме xml, използвайки pugixml библиотека в C++. Можете да изтеглите библиотеката PugiXML от Тук.
#include#include "pugixml.hpp "
използване на пространство от имена std;
използване на пространство от имена pugi;
int main ()
Cout << "\nParsing employees data (sample.xml)… \n\n";
xml_document doc;
// зареждаме XML файла
ако (!док.load_file ("пример.xml ")) return -1;
xml_node tools = doc.дете ("EmployeesData").дете („Служители“);
за (xml_node_iterator it = tools.начало (); то != инструменти.край(); ++ то)
Cout << "Employees:";
за (xml_attribute_iterator ait = it-> attributes_begin (); ait != it-> attributes_end (); ++ ait)
Cout << " " << ait->име () << "=" << ait->стойност ();
Cout << endl;
Cout << endl;
връщане 0;
Пример-3: Анализирайте XML в C ++ с помощта на TinyXML
В този пример на програма ще демонстрираме как да анализираме xml с помощта на библиотеката TinyXML в C++. Ето входния XML файл (пример.xml):
В този пример на програма ще демонстрираме как да анализираме xml с помощта на TinyXML библиотека в C++. Можете да изтеглите библиотеката TinyXML от Тук.
#include#include
#include
#include "tinyxml2.cpp "
използване на пространство от имена std;
използване на пространство от имена tinyxml2;
int main (void)
Cout << "\nParsing my students data (sample.xml)… " << endl;
// Прочетете пробата.xml файл
XMLDocument doc;
док.LoadFile ("проба.xml ");
const char * заглавие = док.FirstChildElement ("MyStudentsData") -> FirstChildElement ("Student") -> GetText ();
printf ("Име на студент:% s \ n", заглавие);
XMLText * textNode = документ.LastChildElement ("MyStudentsData") -> LastChildElement ("Student") -> FirstChild () -> ToText ();
заглавие = textNode-> Стойност ();
printf ("Име на студент:% s \ n", заглавие);
връщане 0;
Заключение
В тази статия обсъдихме накратко XML и разгледахме три различни примера за това как да анализираме XML в C++. TinyXML е минималистична библиотека за синтактичен анализ на XML данни. Повечето програмисти използват предимно RapidXML или PugiXML за синтактичен анализ на XML данни.