У овом чланку ћемо разговарати о томе како рашчланити КСМЛ у програмском језику Ц ++. Видећемо неколико радних примера за разумевање КСМЛ механизма рашчлањивања у језику Ц++.
Шта је КСМЛ?
КСМЛ је означни језик и углавном се користи за организовано чување и пренос података. КСМЛ је скраћеница од еКстенсибле Маркуп Лангуаге. Веома је сличан ХТМЛ-у. КСМЛ је у потпуности фокусиран на чување и пренос података, док се ХТМЛ користи за приказ података у прегледачу.
Узорак КСМЛ датотеке / КСМЛ синтакса
Ево примера КСМЛ датотеке:
За разлику од ХТМЛ-а, он је означни језик оријентисан на ознаке и можемо да дефинишемо сопствену ознаку у КСМЛ датотеци. У горњем примеру имамо неколико кориснички дефинисаних ознака као што је „
Рашчлањивање библиотека у Ц ++:
Постоје разне библиотеке за рашчлањивање КСМЛ података у већини програмских језика високог нивоа. Ц ++ није изузетак. Ево најпопуларнијих Ц ++ библиотека за рашчлањивање КСМЛ података:
- РапидКСМЛ
- ПугиКСМЛ
- ТиниКСМЛ
Као што и само име говори, РапидКСМЛ је углавном фокусиран на брзину и представља библиотеку за рашчлањивање у ДОМ стилу. ПугиКСМЛ подржава Уницоде конверзију. Можда желите да користите ПугиКСМЛ ако желите да конвертујете УТФ-16 документ у УТФ-8. ТиниКСМЛ је верзија са минималним минимумом за рашчлањивање КСМЛ података и није тако брза у поређењу са претходне две. Ако желите само да обавите посао и не бринете се за брзину, можете одабрати ТиниКСМЛ.
Примери
Сада имамо основно разумевање КСМЛ и КСМЛ библиотека за рашчлањивање у језику Ц++. Погледајмо сада неколико примера за рашчлањивање кмл датотеке на Ц ++:
- Пример-1: Рашчланите КСМЛ у Ц ++ помоћу РапидКСМЛ
- Пример-2: Рашчланите КСМЛ у Ц ++ помоћу ПугиКСМЛ
- Пример-3: Рашчланите КСМЛ у Ц ++ помоћу ТиниКСМЛ
У сваком од ових примера користићемо одговарајуће библиотеке за рашчлањивање узорка КСМЛ датотеке.
Пример-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;
Закључак
У овом чланку смо укратко разговарали о КСМЛ-у и размотрили три различита примера како рашчланити КСМЛ у језику Ц++. ТиниКСМЛ је минималистичка библиотека за рашчлањивање КСМЛ података. Већина програмера углавном користи РапидКСМЛ или ПугиКСМЛ за рашчлањивање КСМЛ података.