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

How Parse Xml C



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

Шта је КСМЛ?

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







Пример КСМЛ датотеке/КСМЛ синтаксе

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



верзија='1.0' кодирање='утф-8'?>

>

студент_типе='Скраћено време'>

>Том>

>

студент_типе='Пуно време'>

>Драке>

>

>

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



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

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





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

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

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



  • Пример-1: Рашчланите КСМЛ у Ц ++ користећи РапидКСМЛ
  • Пример-2: Рашчланите КСМЛ у Ц ++ користећи ПугиКСМЛ
  • Пример-3: Рашчланите КСМЛ у Ц ++ користећи ТиниКСМЛ

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

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

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

верзија='1.0' кодирање='утф-8'?>

>

студент_типе='Скраћено време'>

>Јохн>

>

студент_типе='Пуно време'>

>Сеан>

>

студент_типе='Скраћено време'>

>Сарах>

>

>

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

#инцлуде
#инцлуде
#инцлуде
#инцлуде 'рапидкмл.хпп'

Користећи именски просторсати;
Користећи именски просторрапидкмл;


кмл_доцументдоц
кмл_ноде *роот_ноде= НУЛА;

интглавни(празнина)
{
цена << ' нРашчлањивање података мојих ученика (сампле.кмл) ..... ' <<ендл;

// Прочитајте датотеку сампле.кмл
ифстреам тхеФиле('сампле.кмл');
вектор<цхар>тампон((истреамбуф_итератор<цхар>(фајл)), истреамбуф_итератор<цхар>());
тампон.потисне(' 0');

// Рашчланите бафер
доц.рашчланити<0>(&тампон[0]);

// Сазнајте корен чвор
роот_ноде=доц.фирст_ноде('МиСтудентсДата');

// Итерација над студентским чворовима
за (кмл_ноде *студент_ноде=роот_ноде->фирст_ноде('Ученик');студент_ноде;студент_ноде=студент_ноде->нект_сиблинг())
{
цена << ' нВрста ученика = ' <<студент_ноде->први_атрибут('студент_типе')->вредност();
цена <<ендл;

// Интересујте се над именима ученика
за(кмл_ноде *студент_наме_ноде=студент_ноде->фирст_ноде('Име');студент_наме_ноде;студент_наме_ноде=студент_наме_ноде->нект_сиблинг())
{
цена << 'Име ученика =' <<студент_наме_ноде->вредност();
цена <<ендл;
}
цена <<ендл;
}

повратак 0;
}

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

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

верзија='1.0' кодирање=„УТФ-8“ самостална='не' ?>

ФорматВерсион='1'>

>

Име='Јохн' Тип='Скраћено време'>

>

Име='Сеан' Тип='Пуно време'>

>

Име='Сарах' Тип='Скраћено време'>

>

>

>

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

#инцлуде
#инцлуде 'пугикмл.хпп'

Користећи именски просторсати;
Користећи именски просторпуги;

интглавни()
{
цена << ' нРашчлањивање података о запосленима (сампле.кмл) ..... н н';


кмл_доцумент доц;

// учитавање КСМЛ датотеке
ако (!доц.лоад_филе('сампле.кмл')) повратак -1;

кмл_ноде алати=доц.дете(„Подаци о запосленима“).дете('Запослени');


за (кмл_ноде_итератор ит=алата.започети();то!=алата.крај(); ++то)
{
цена << 'Запослени:';

за (кмл_аттрибуте_итератор аит=то->аттрибутес_бегин();који припада!=то->аттрибутес_енд(); ++који припада)
{
цена << '' <<који припада->име() << '=' <<који припада->вредност();
}

цена <<ендл;
}

цена <<ендл;

повратак 0;

}

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

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

верзија='1.0' кодирање='утф-8'?>

>

>Јохн>

>Сеан>

>Сарах>

>

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

#инцлуде
#инцлуде
#инцлуде
#инцлуде 'тиникмл2.цпп'

Користећи именски просторсати;
Користећи именски простортиникмл2;


интглавни(празнина)
{
цена << ' нРашчлањивање података мојих ученика (сампле.кмл) ..... ' <<ендл;

// Прочитајте датотеку сампле.кмл
КСМЛДоцумент доц;
доц.ЛоадФиле( 'сампле.кмл' );

цонст цхар*наслов=доц.ФирстЦхилдЕлемент( 'МиСтудентсДата' )->ФирстЦхилдЕлемент( 'Ученик' )->ГетТект();
принтф( 'Име ученика: %с н', наслов);


КСМЛТект*тектНоде=доц.ЛастЦхилдЕлемент( 'МиСтудентсДата' )->ЛастЦхилдЕлемент( 'Ученик' )->Прво дете()->Слати поруке();
наслов=тектНоде->Вредност();
принтф( 'Име ученика: %с н', наслов);


повратак 0;
}

Закључак

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