Cara Menghuraikan XML dalam C ++

How Parse Xml C



Dalam artikel ini, kita akan membincangkan cara menguraikan XML dalam bahasa pengaturcaraan C ++. Kami akan melihat beberapa contoh kerja untuk memahami mekanisme penghuraian XML di C ++.

Apa itu XML?

XML adalah bahasa markup dan digunakan terutamanya untuk menyimpan dan memindahkan data secara teratur. XML bermaksud Bahasa Markah eXtensible. Ia sangat serupa dengan HTML. XML sepenuhnya fokus pada penyimpanan dan pemindahan data, sedangkan HTML digunakan untuk menampilkan data pada penyemak imbas.







Contoh Sintaks Fail XML / XML

Berikut adalah contoh fail XML:



versi='1.0' pengekodan='utf-8'?>

>

jenis_pelajar='Sambilan'>

>Tom>

>

jenis_pelajar='Sepenuh masa'>

>Drake>

>

>

Tidak seperti HTML, ini adalah bahasa markup berorientasikan tag, dan kami dapat menentukan tag kami sendiri dalam fail XML. Dalam contoh di atas, kami mempunyai beberapa teg yang ditentukan pengguna seperti. Setiap teg akan mempunyai tanda akhir yang sesuai. adalah tanda akhir untuk. Kami dapat menentukan seberapa banyak tag yang ditentukan pengguna untuk mengatur data.



Menghuraikan Perpustakaan dalam C ++:

Terdapat pelbagai perpustakaan untuk menguraikan data XML di kebanyakan bahasa pengaturcaraan peringkat tinggi. C ++ tidak terkecuali. Berikut adalah perpustakaan C ++ yang paling popular untuk menguraikan data XML:





  1. RapidXML
  2. PugiXML
  3. TinyXML

Seperti namanya, RapidXML terutama tertumpu pada kepantasan, dan ini adalah perpustakaan penghuraian gaya DOM. PugiXML menyokong penukaran Unicode. Anda mungkin mahu menggunakan PugiXML jika anda mahu menukar dokumen UTF-16 ke UTF-8. TinyXML adalah versi minimum untuk menguraikan data XML dan tidak secepat yang dibandingkan dengan dua sebelumnya. Sekiranya anda ingin menyelesaikan tugas dan tidak peduli dengan kelajuannya, anda boleh memilih TinyXML.

Contoh
Sekarang, kami mempunyai pemahaman asas mengenai perpustakaan mengurai XML dan XML di C ++. Sekarang mari kita lihat beberapa contoh untuk menguraikan fail xml di C ++:



  • Contoh-1: Huraikan XML dalam C ++ menggunakan RapidXML
  • Contoh-2: Huraikan XML dalam C ++ menggunakan PugiXML
  • Contoh-3: Huraikan XML dalam C ++ menggunakan TinyXML

Dalam setiap contoh ini, kami akan menggunakan perpustakaan masing-masing untuk menguraikan contoh fail XML.

Contoh-1: Huraikan XML dalam C ++ menggunakan RapidXML

Dalam program contoh ini, kami akan menunjukkan cara menguraikan xml menggunakan perpustakaan RapidXML di C ++. Berikut adalah fail XML input (sample.xml):

versi='1.0' pengekodan='utf-8'?>

>

jenis_pelajar='Sambilan'>

>John>

>

jenis_pelajar='Sepenuh masa'>

>Sean>

>

jenis_pelajar='Sambilan'>

>Sarah>

>

>

Tujuan kami di sini adalah untuk menguraikan fail XML di atas menggunakan C ++. Berikut adalah program C ++ untuk menguraikan data XML menggunakan RapidXML. Anda boleh memuat turun perpustakaan RapidXML dari Di sini .

#sertakan
#sertakan
#sertakan
#sertakan 'quickxml.hpp'

menggunakan ruang namaJam;
menggunakan ruang namafastxml;


xml_dokumendokumen
xml_node *root_node= BULAN;

intutama(batal)
{
kos << ' nMenghuraikan data pelajar saya (sample.xml) ..... ' <<endl;

// Baca fail sample.xml
ifstream theFile('sample.xml');
vektor<char>penyangga((istreambuf_iterator<char>(fail)), istreambuf_iterator<char>());
penyangga.menolak kembali(' 0');

// Uraikan penyangga
dokumen.menghurai<0>(&penyangga[0]);

// Ketahui simpul akar
root_node=dokumen.simpul_ pertama('MyStudentsData');

// Beralih ke nod pelajar
untuk (xml_node *simpul_pelajar=root_node->simpul_ pertama('Pelajar');simpul_pelajar;simpul_pelajar=simpul_pelajar->saudara_ seterusnya())
{
kos << ' nJenis Pelajar = ' <<simpul_pelajar->atribut_ pertama('pelajar_jenis')->nilai();
kos <<endl;

// Bergaul dengan Nama Pelajar
untuk(xml_node *pelajar_nama_node=simpul_pelajar->simpul_ pertama('Nama');pelajar_nama_node;pelajar_nama_node=pelajar_nama_node->saudara_ seterusnya())
{
kos << 'Nama Pelajar =' <<pelajar_nama_node->nilai();
kos <<endl;
}
kos <<endl;
}

kembali 0;
}

Contoh-2: Huraikan XML dalam C ++ menggunakan PugiXML

Dalam program contoh ini, kami akan menunjukkan cara menguraikan xml menggunakan perpustakaan PugiXML di C ++. Berikut adalah fail XML input (sample.xml):

versi='1.0' pengekodan='UTF-8' mandiri='tidak' ?>

FormatVersi='1'>

>

Nama='John' Jenis='Separuh Masa'>

>

Nama='Sean' Jenis='Sepenuh Masa'>

>

Nama='Sarah' Jenis='Separuh Masa'>

>

>

>

Dalam program contoh ini, kami akan menunjukkan cara menguraikan xml menggunakan pustaka pugixml di C ++. Anda boleh memuat turun pustaka PugiXML dari Di sini .

#sertakan
#sertakan 'pugixml.hpp'

menggunakan ruang namaJam;
menggunakan ruang namapugi;

intutama()
{
kos << ' nMenghuraikan data pekerja (sample.xml) ..... n n';


xml_dokumen dokumen;

// muatkan fail XML
sekiranya (!dokumen.muat_file('sample.xml')) kembali -1;

alat xml_node=dokumen.anak('Data Pekerja').anak('Pekerja');


untuk (xml_node_iteratorinya=alatan.bermula();ia!=alatan.akhir(); ++ia)
{
kos << 'Pekerja:';

untuk (xml_attribute_iterator ait=ia->atribut_begin();kepunyaan!=ia->atribut_akhir(); ++kepunyaan)
{
kos << '' <<kepunyaan->nama() << '=' <<kepunyaan->nilai();
}

kos <<endl;
}

kos <<endl;

kembali 0;

}

Contoh-3: Huraikan XML dalam C ++ menggunakan TinyXML

Dalam program contoh ini, kami akan menunjukkan cara menguraikan xml menggunakan perpustakaan TinyXML di C ++. Berikut adalah fail XML input (sample.xml):

versi='1.0' pengekodan='utf-8'?>

>

>John>

>Sean>

>Sarah>

>

Dalam program contoh ini, kami akan menunjukkan cara menguraikan xml menggunakan perpustakaan TinyXML di C ++. Anda boleh memuat turun perpustakaan TinyXML dari Di sini .

#sertakan
#sertakan
#sertakan
#sertakan 'tinyxml2.cpp'

menggunakan ruang namaJam;
menggunakan ruang namatinyxml2;


intutama(batal)
{
kos << ' nMenghuraikan data pelajar saya (sample.xml) ..... ' <<endl;

// Baca fail sample.xml
Dokumen XMLDocument;
dokumen.MuatkanFile( 'sample.xml' );

penyambung char*tajuk=dokumen.FirstChildElement( 'MyStudentsData' )->FirstChildElement( 'Pelajar' )->GetTeks();
printf( 'Nama Pelajar:% s n', tajuk);


Teks XML*Nota teks=dokumen.LastChildElement( 'MyStudentsData' )->LastChildElement( 'Pelajar' )->Anak Pertama()->Teks();
tajuk=Nota teks->Nilai();
printf( 'Nama Pelajar:% s n', tajuk);


kembali 0;
}

Kesimpulannya

Dalam artikel ini, kami telah membincangkan secara ringkas XML dan melihat tiga contoh berbeza bagaimana menguraikan XML di C ++. TinyXML adalah perpustakaan minimalis untuk menguraikan data XML. Sebilangan besar pengaturcara menggunakan RapidXML atau PugiXML untuk menguraikan data XML.