Ц ++

Како рашчланити КСМЛ у Ц ++

Како рашчланити КСМЛ у Ц ++

У овом чланку ћемо разговарати о томе како рашчланити КСМЛ у програмском језику Ц ++. Видећемо неколико радних примера за разумевање КСМЛ механизма рашчлањивања у језику Ц++.

Шта је КСМЛ?

КСМЛ је означни језик и углавном се користи за организовано чување и пренос података. КСМЛ је скраћеница од еКстенсибле Маркуп Лангуаге. Веома је сличан ХТМЛ-у. КСМЛ је у потпуности фокусиран на чување и пренос података, док се ХТМЛ користи за приказ података у прегледачу.

Узорак КСМЛ датотеке / КСМЛ синтакса

Ево примера КСМЛ датотеке:




Том


Драке

За разлику од ХТМЛ-а, он је означни језик оријентисан на ознаке и можемо да дефинишемо сопствену ознаку у КСМЛ датотеци. У горњем примеру имамо неколико кориснички дефинисаних ознака као што је „”. Свака ознака ће имати одговарајућу завршну ознаку. „”Је завршна ознака за„”. Можемо дефинисати онолико кориснички дефинисаних ознака колико желимо да организујемо податке.

Рашчлањивање библиотека у Ц ++:

Постоје разне библиотеке за рашчлањивање КСМЛ података у већини програмских језика високог нивоа. Ц ++ није изузетак. Ево најпопуларнијих Ц ++ библиотека за рашчлањивање КСМЛ података:

  1. РапидКСМЛ
  2. ПугиКСМЛ
  3. ТиниКСМЛ

Као што и само име говори, РапидКСМЛ је углавном фокусиран на брзину и представља библиотеку за рашчлањивање у ДОМ стилу. ПугиКСМЛ подржава Уницоде конверзију. Можда желите да користите ПугиКСМЛ ако желите да конвертујете УТФ-16 документ у УТФ-8. ТиниКСМЛ је верзија са минималним минимумом за рашчлањивање КСМЛ података и није тако брза у поређењу са претходне две. Ако желите само да обавите посао и не бринете се за брзину, можете одабрати ТиниКСМЛ.

Примери
Сада имамо основно разумевање КСМЛ и КСМЛ библиотека за рашчлањивање у језику Ц++. Погледајмо сада неколико примера за рашчлањивање кмл датотеке на Ц ++:

У сваком од ових примера користићемо одговарајуће библиотеке за рашчлањивање узорка КСМЛ датотеке.

Пример-1: Рашчланите КСМЛ у Ц ++ помоћу РапидКСМЛ

У овом примеру програма показаћемо како се рашчлањује кмл помоћу библиотеке РапидКСМЛ у језику Ц++. Ево улазне КСМЛ датотеке (узорак.кмл):




Јохн


Сеан


Сарах

Наш циљ овде је да анализирамо горњу КСМЛ датотеку помоћу Ц++. Ево програма Ц ++ за рашчлањивање КСМЛ података помоћу РапидКСМЛ. РапидКСМЛ библиотеку можете преузети овде.

#инцлуде
#инцлуде
#инцлуде
#инцлуде "рапидкмл.хпп "
коришћење простора имена стд;
коришћење простора имена рапидкмл;
кмл_доцумент <> доц
кмл_ноде <> * роот_ноде = НУЛЛ;
инт маин (воид)

цоут << "\nParsing my students data (sample.xml)… " << endl;
// Прочитај узорак.кмл датотеку
ифстреам тхеФиле ("узорак.кмл ");
вектор бафер ((истреамбуф_итератор(датотека)), истреамбуф_итератор());
тампон.пусх_бацк ('\ 0');
// Анализирај међуспремник
доц.рашчланити<0>(& бафер [0]);
// Откривање основног чвора
роот_ноде = док.фирст_ноде ("МиСтудентсДата");
// Итерација преко студентских чворова
за (кмл_ноде <> * студент_ноде = роот_ноде-> фирст_ноде ("Студент"); студент_ноде; студент_ноде = студент_ноде-> нект_сиблинг ())

цоут << "\nStudent Type =   " << student_node->фирст_аттрибуте ("студент_типе") -> валуе ();
цоут << endl;
// Интересовање над именима ученика
за (кмл_ноде <> * студент_наме_ноде = студент_ноде-> фирст_ноде ("Наме"); студент_наме_ноде; студент_наме_ноде = студент_наме_ноде-> нект_сиблинг ())

цоут << "Student Name =   " << student_name_node->вредност ();
цоут << endl;

цоут << endl;

ретурн 0;

Пример-2: Рашчланите КСМЛ у Ц ++ помоћу ПугиКСМЛ

У овом примеру програма показаћемо како се рашчлањује кмл помоћу ПугиКСМЛ библиотеке у Ц-у++. Ево улазне КСМЛ датотеке (узорак.кмл):











У овом примеру програма показаћемо како се рашчлањује кмл помоћу пугикмл библиотеке у Ц++. ПугиКСМЛ библиотеку можете преузети овде.

#инцлуде
#инцлуде "пугикмл.хпп "
коришћење простора имена стд;
коришћење простора имена пуги;
инт маин ()

цоут << "\nParsing employees data (sample.xml)… \n\n";
кмл_доцумент доц;
// учитавање КСМЛ датотеке
ако (!доц.лоад_филе ("узорак.кмл ")) ретурн -1;
кмл_ноде тоолс = доц.дете („Подаци запослених“).дете („Запослени“);
фор (кмл_ноде_итератор ит = тоолс.почети(); то != алата.крај(); ++ ит)

цоут << "Employees:";
за (кмл_аттрибуте_итератор аит = ит-> аттрибутес_бегин (); аит != ит-> аттрибутес_енд (); ++ аит)

цоут << " " << ait->име () << "=" << ait->вредност ();

цоут << endl;

цоут << endl;
ретурн 0;

Пример-3: Рашчланите КСМЛ у Ц ++ помоћу ТиниКСМЛ

У овом примеру програма показаћемо како се рашчлањује кмл помоћу ТиниКСМЛ библиотеке у језику Ц++. Ево улазне КСМЛ датотеке (узорак.кмл):



Јохн
Сеан
Сарах

У овом примеру програма показаћемо како се рашчлањује кмл помоћу ТиниКСМЛ библиотеке у језику Ц++. ТиниКСМЛ библиотеку можете преузети овде.

#инцлуде
#инцлуде
#инцлуде
#инцлуде "тиникмл2.цпп "
коришћење простора имена стд;
коришћење простора имена тиникмл2;
инт маин (воид)

цоут << "\nParsing my students data (sample.xml)… " << endl;
// Прочитај узорак.кмл датотеку
КСМЛДоцумент доц;
доц.ЛоадФиле ("узорак.кмл ");
цонст цхар * наслов = док.ФирстЦхилдЕлемент ("МиСтудентсДата") -> ФирстЦхилдЕлемент ("Студент") -> ГетТект ();
принтф ("Име ученика:% с \ н", наслов);
КСМЛТект * тектНоде = док.ЛастЦхилдЕлемент ("МиСтудентсДата") -> ЛастЦхилдЕлемент ("Студент") -> ФирстЦхилд () -> ТоТект ();
титле = тектНоде-> Валуе ();
принтф ("Име ученика:% с \ н", наслов);
ретурн 0;

Закључак

У овом чланку смо укратко разговарали о КСМЛ-у и размотрили три различита примера како рашчланити КСМЛ у језику Ц++. ТиниКСМЛ је минималистичка библиотека за рашчлањивање КСМЛ података.  Већина програмера углавном користи РапидКСМЛ или ПугиКСМЛ за рашчлањивање КСМЛ података.

Бесплатни и отворени кодни покретачки програми за развој Линук игара
Овај чланак ће обухватити листу бесплатних покретача игара отвореног кода који се могу користити за развој 2Д и 3Д игара на Линуку. Бројни су такви мо...
Водич за сенку Томб Раидера за Линук
Схадов оф тхе Томб Раидер је дванаести додатак серији Томб Раидер - акцијско-авантуристичкој игри коју је створио Еидос Монтреал. И критичари и фанови...
Како појачати ФПС у Линуку?
ФПС је скраћеница за Фрејмова у секунди. Задатак ФПС-а је да мери брзину кадрова у репродукцијама видео записа или играчким перформансама. Једноставни...