Cara Mengurai XML di C++

How Parse Xml C



Pada artikel ini, kita akan membahas cara mengurai XML dalam bahasa pemrograman C++. Kita akan melihat beberapa contoh kerja untuk memahami mekanisme parsing XML di C++.

Apa itu XML?

XML adalah bahasa markup dan terutama digunakan untuk menyimpan dan mentransfer data secara terorganisir. XML adalah singkatan dari eXtensible Markup Language. Ini sangat mirip dengan HTML. XML sepenuhnya berfokus pada penyimpanan dan transfer data, sedangkan HTML digunakan untuk menampilkan data di browser.







Contoh File XML/XML Sintaks

Berikut adalah contoh file XML:



Versi: kapan='1.0' pengkodean='utf-8'?>

>

tipe_siswa='Paruh waktu'>

>tom>

>

tipe_siswa='Waktu penuh'>

>Itik jantan>

>

>

Tidak seperti HTML, Ini adalah bahasa markup yang berorientasi pada tag, dan kita dapat mendefinisikan tag kita sendiri dalam file XML. Dalam contoh di atas, kami memiliki beberapa tag yang ditentukan pengguna seperti . Setiap tag akan memiliki tag penutup yang sesuai. adalah tag penutup untuk . Kami dapat menentukan tag yang ditentukan pengguna sebanyak yang kami inginkan untuk mengatur data.



Mengurai Pustaka di C++:

Ada berbagai perpustakaan untuk mengurai data XML di sebagian besar bahasa pemrograman tingkat tinggi. C++ tidak terkecuali. Berikut adalah pustaka C++ paling populer untuk mengurai data XML:





  1. RapidXML
  2. PugiXML
  3. KecilXML

Seperti namanya, RapidXML terutama berfokus pada kecepatan, dan ini adalah pustaka penguraian gaya DOM. PugiXML mendukung konversi Unicode. Anda mungkin ingin menggunakan PugiXML jika Anda ingin mengonversi dokumen UTF-16 ke UTF-8. TinyXML adalah versi minimal untuk mengurai data XML dan tidak secepat dibandingkan dengan dua versi sebelumnya. Jika Anda hanya ingin menyelesaikan pekerjaan dan tidak peduli dengan kecepatan, Anda dapat memilih TinyXML.

Contoh
Sekarang, kita memiliki pemahaman dasar tentang XML dan XML parsing library di C++. Sekarang mari kita lihat beberapa contoh untuk mengurai file xml di C++:



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

Dalam setiap contoh ini, kita akan menggunakan pustaka masing-masing untuk mengurai file XML sampel.

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

Dalam contoh program ini, kami akan mendemonstrasikan cara mengurai xml menggunakan pustaka RapidXML di C++. Berikut adalah file XML input (sample.xml):

Versi: kapan='1.0' pengkodean='utf-8'?>

>

tipe_siswa='Paruh waktu'>

>John>

>

tipe_siswa='Waktu penuh'>

>Sean>

>

tipe_siswa='Paruh waktu'>

>Sarah>

>

>

Tujuan kami di sini adalah untuk mengurai file XML di atas menggunakan C++. Berikut adalah program C++ untuk mengurai data XML menggunakan RapidXML. Anda dapat mengunduh perpustakaan RapidXML dari Di Sini .

#termasuk
#termasuk
#termasuk
#sertakan 'rapidxml.hpp'

menggunakan ruang namajam;
menggunakan ruang namarapidxml;


xml_dokumendokter
xml_node *root_node= BATAL;

ke dalamutama(ruang kosong)
{
biaya << ' Mengurai data siswa saya (sample.xml).....' <<akhir;

// Baca file sample.xml
ifstream theFile('contoh.xml');
vektor<arang>penyangga((istreambuf_iterator<arang>(berkas)), istreambuf_iterator<arang>());
penyangga.push_back(' 0');

// Mengurai buffer
dokter.mengurai<0>(&penyangga[0]);

// Cari tahu simpul akar
root_node=dokter.first_node('Data Siswa Saya');

// Iterasi pada node siswa
untuk (xml_node *siswa_node=root_node->first_node('Murid');siswa_node;siswa_node=siswa_node->saudara_berikutnya())
{
biaya << ' Tipe Siswa = ' <<siswa_node->first_attribute('tipe_siswa')->nilai();
biaya <<akhir;

// Interate atas Nama Siswa
untuk(xml_node *nama_siswa_node=siswa_node->first_node('Nama');nama_siswa_node;nama_siswa_node=nama_siswa_node->saudara_berikutnya())
{
biaya << 'Nama Siswa = ' <<nama_siswa_node->nilai();
biaya <<akhir;
}
biaya <<akhir;
}

kembali 0;
}

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

Dalam contoh program ini, kami akan mendemonstrasikan cara mengurai xml menggunakan PugiXML library di C++. Berikut adalah file XML input (sample.xml):

Versi: kapan='1.0' pengkodean='UTF-8' mandiri='tidak' ?>

FormatVersi='1'>

>

Nama='Yohanes' Jenis='Paruh waktu'>

>

Nama='Sean' Jenis='Waktu penuh'>

>

Nama='Sarah' Jenis='Paruh waktu'>

>

>

>

Dalam contoh program ini, kami akan mendemonstrasikan cara mengurai xml menggunakan pustaka pugixml di C++. Anda dapat mengunduh pustaka PugiXML dari Di Sini .

#termasuk
#sertakan 'pugixml.hpp'

menggunakan ruang namajam;
menggunakan ruang namapugi;

ke dalamutama()
{
biaya << ' Parsing data karyawan (sample.xml)..... ';


xml_dokumen dokumen;

// memuat file XML
jika (!dokter.load_file('contoh.xml')) kembali -1;

alat xml_node=dokter.anak('Data Karyawan').anak('Karyawan');


untuk (xml_node_iterator itu=peralatan.mulai();dia!=peralatan.akhir(); ++dia)
{
biaya << 'Karyawan:';

untuk (xml_attribute_iterator ait=dia->atribut_begin();termasuk!=dia->atribut_akhir(); ++termasuk)
{
biaya << '' <<termasuk->nama() << '=' <<termasuk->nilai();
}

biaya <<akhir;
}

biaya <<akhir;

kembali 0;

}

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

Dalam contoh program ini, kami akan mendemonstrasikan cara mengurai xml menggunakan library TinyXML di C++. Berikut adalah file XML input (sample.xml):

Versi: kapan='1.0' pengkodean='utf-8'?>

>

>John>

>Sean>

>Sarah>

>

Dalam contoh program ini, kami akan mendemonstrasikan cara mengurai xml menggunakan library TinyXML di C++. Anda dapat mengunduh perpustakaan TinyXML dari Di Sini .

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

menggunakan ruang namajam;
menggunakan ruang namakecilxml2;


ke dalamutama(ruang kosong)
{
biaya << ' Mengurai data siswa saya (sample.xml).....' <<akhir;

// Baca file sample.xml
Dokumen XMLDocument;
dokter.Muat File( 'contoh.xml' );

konstan arang*judul=dokter.Elemen Anak Pertama( 'Data Siswa Saya' )->Elemen Anak Pertama( 'Murid' )->DapatkanTeks();
printf( 'Nama Siswa: %s ', judul);


XMLTeks*teksNode=dokter.Elemen Anak Terakhir( 'Data Siswa Saya' )->Elemen Anak Terakhir( 'Murid' )->Anak pertama()->Untuk mengirim pesan();
judul=teksNode->Nilai();
printf( 'Nama Siswa: %s ', judul);


kembali 0;
}

Kesimpulan

Dalam artikel ini, kami telah membahas secara singkat XML dan melihat ke dalam tiga contoh berbeda tentang cara mengurai XML dalam C++. TinyXML adalah pustaka minimalis untuk mem-parsing data XML. Sebagian besar programmer terutama menggunakan RapidXML atau PugiXML untuk mengurai data XML.