Pemrograman

Bahasa

Framework

Peralatan

Info

Mengurai dokumen XML dengan DOM API di python

– 24 February 2015

DOM (Document Object Model) adalah sebuah API lintas bahasa dari World Wide Web Consortium (W3C). API ini sangat bermanfaat untuk membaca data yang ada di dokumen XML. Tulisan ini saya buat berdasarkan panduan di tutorialspoint.com.

python XML programming

Saya memiliki dokumen XML bernama kartu_nama.xml, isinya sebagai berikut:

<?xml version="1.0"?>
<kartuNama>
    <nama>Ardianta Pargo</nama>

    <jenis-kelamin>Laki-laki</jenis-kelamin>

    <alamat>
        <dusun>Sisik Goak</dusun>
        <desa>Sisik</desa>
        <kecamatan>Pringgarata</kecamatan>
        <kabupaten>Lombok Tengah</kabupaten>
    </alamat>

    <ponsel>087866866694</ponsel>
    <surel>ardianta_pargo@yahoo.co.id</surel>

    <sosial-media>
        <facebook>ardianta.pargo</facebook>
        <twitter>@ArdiantaPargo</twitter>
    </sosial-media>
    <situs-web>http://petanikode.blogspot.com</situs-web>
</kartuNama>

Saya ingin menampilkan data-data yang ada di dokumen XML tersebut dengan python. Oleh karena itu, saya membutuhkan modul xml.dom. Saya akan menggunakan fungsi minidom.parse() untuk mengurai isi dokumen XML. Berikut kode lengkapnya:

from xml.dom.minidom import parse

# membuka dokumen XML
berkasXML = parse("kartu_nama.xml")

# membuat objek kartu nama
kn = berkasXML.documentElement

# ambil data-data yang ada di dalam XML
nama = kn.getElementsByTagName("nama")[0].childNodes[0].data
jenis_kelamin = kn.getElementsByTagName("jenis-kelamin")[0].childNodes[0].data

dusun = kn.getElementsByTagName('dusun')[0].childNodes[0].data
desa = kn.getElementsByTagName('desa')[0].childNodes[0].data
kecamata = kn.getElementsByTagName('kecamatan')[0].childNodes[0].data
kabupaten = kn.getElementsByTagName('kabupaten')[0].childNodes[0].data
alamat = dusun + ", Desa " + desa + ", Kecamatan " + kecamata + ", Kabupaten " + kabupaten

ponsel = kn.getElementsByTagName("ponsel")[0].childNodes[0].data
surel = kn.getElementsByTagName("surel")[0].childNodes[0].data

fb = kn.getElementsByTagName("facebook")[0].childNodes[0].data
tw = kn.getElementsByTagName("twitter")[0].childNodes[0].data

situs = kn.getElementsByTagName("situs-web")[0].childNodes[0].data

# cetak data yang telah didapatkan
print "------------------ KARTU NAMA ------------------"
print "Nama \t\t: %s" % nama
print "Jenis Kelamin \t: %s" % jenis_kelamin
print "Alamat \t\t: %s" % alamat
print "Ponsel \t\t: %s" % ponsel
print "Surel \t\t: %s" % surel
print "Facebook \t: %s" % fb
print "Twitter \t: %s" % tw
print "Situs web \t: %s" % situs

Hasil saat dijalankan:

$ python bacaXML.py 
------------------ KARTU NAMA ------------------
Nama   : Ardianta Pargo
Jenis Kelamin  : Laki-laki
Alamat   : Sisik Goak, Desa Sisik, Kecamatan Pringgarata, Kabupaten Lombok Tengah
Ponsel   : 087866866694
Surel   : ardianta_pargo@yahoo.co.id
Facebook  : ardianta.pargo
Twitter  : @ArdiantaPargo
Situs web  : http://petanikode.blogspot.com

Fungsi atau method yang saya gunakan untuk menangkap elemen XML adalah getElementsByTagName(). Fungsi ini akan menangkap elemen dalam bentuk list.

>>> print kn.getElementsByTagName("nama")
[<DOM Element: nama at 0xb720bdec>]

>>> print kn.getElementsByTagName("nama")[0]
<DOM Element: nama at 0xb720bdec>

>>> print kn.getElementsByTagName("nama")[0].childNodes
[<DOM Text node "u'Ardianta P'...">]

>>> print kn.getElementsByTagName("nama")[0].childNodes
[<DOM Text node "u'Ardianta P'...">]

>>> print kn.getElementsByTagName("nama")[0].childNodes[0]
<DOM Text node "u'Ardianta P'...">

>>> print kn.getElementsByTagName("nama")[0].childNodes[0].data
Ardianta Pargo

No comments :

Post a Comment