Misalkan Anda memiliki data berformat XML yang selanjutnya ingin Anda
import ke dalam database MySQL. Apa yang akan Anda lakukan? Cara yang
bisa Anda lakukan adalah dengan menggunakan tool seperti Navicat. Dengan
tool ini, Anda bisa import data dengan cepat. Namun sayang… tool ini
berbayar .
Trus… bisakah tool seperti phpMyAdmin menangani import data XML ke dalam MySQL? he.. 3x sepertinya tidak bisa. CMIIW.
Alternatif cara yang lain untuk import data ini adalah dengan membuat tool sendiri dengan sebuah script PHP. Mau tahu caranya?
OK.. sebelum melangkah lebih jauh tentang cara import data XML ke
MySQL, sudahkah Anda mengetahui apa itu XML? XML atau Xtensible Markup
Languange adalah suatu representasi data dalam bentuk obyek.
Representasi data dalam bentuk obyek tersebut disajikan dalam format
seperti halnya tag HTML.
Berikut ini adalah sebuah contoh dokumen XML yang merepresentasikan data buku yang terdapat dalam sebuah toko buku.
databuku.xml
01.
xml
version
=
"1.0"
?>
02.
<
catalog
>
03.
<
book
id
=
"bk101"
>
04.
<
author
>Gambardella, Matthewauthor
>
05.
<
title
>XML Developer's Guidetitle
>
06.
<
genre
>Computergenre
>
07.
<
price
>44.95price
>
08.
<
publish_date
>2000-10-01publish_date
>
09.
<
description
>An in-depth look at creating applications
10.
with XML.description
>
11.
book
>
12.
<
book
id
=
"bk102"
>
13.
<
author
>Ralls, Kimauthor
>
14.
<
title
>Midnight Raintitle
>
15.
<
genre
>Fantasygenre
>
16.
<
price
>5.95price
>
17.
<
publish_date
>2000-12-16publish_date
>
18.
<
description
>A former architect battles corporate zombies,
19.
an evil sorceress, and her own childhood to become queen
20.
of the world.description
>
21.
book
>
22.
<
book
id
=
"bk103"
>
23.
<
author
>Corets, Evaauthor
>
24.
<
title
>Maeve Ascendanttitle
>
25.
<
genre
>Fantasygenre
>
26.
<
price
>5.95price
>
27.
<
publish_date
>2000-11-17publish_date
>
28.
<
description
>After the collapse of a nanotechnology
29.
society in England, the young survivors lay the
30.
foundation for a new society.description
>
31.
book
>
32.
catalog
>
Dokumen XML di atas menyajikan 3 buah buku beserta keterangannya yang
kesemuanya disajikan dalam bentuk obyek dengan tag seperti halnya HTML.
Dalam setiap buku, terdapat 7 buah properties yaitu ID buku, author
(pengarang), title, genre (jenis buku), price, publish_date dan
description. Maaf sampel XML nya ambil dari situs asing, so… bahasanya
Inggris
Nah.. dalam artikel ini akan dibahas bagaimana cara mengimport data
buku yang ada dalam dokumen XML di atas ke dalam database MySQL.
Sebelum proses importing data, hal utama yang harus Anda lakukan
terhadap data dari dokumen XML di atas adalah memparsing masing-masing
obyek, atau membaca value dalam setiap obyeknya. Sebagai contoh, kita
akan membaca data dari buku dengan id ‘bk101′. Dari proses parsing ini,
kita harus bisa mendapatkan data keterangan tentang buku tersebut, yaitu
authornya siapa, title nya apa dsb.
So.. dengan demikian bagaimana cara membaca value dari setiap obyek
dalam dokumen XML? Don’t worry, dalam PHP telah tersedia function untuk
proses parsing XML ini. Function yang dimaksud adalah:
1.
simplexml_load_file(nama file XML);
OK.. sekarang kita akan mencoba membuat script PHP untuk memparsing data buku dari dokumen XML databuku.xml di atas.
01.
02.
$dataxml
= simplexml_load_file(
'databuku.xml'
);
03.
04.
foreach
(
$dataxml
->book
as
$buku
)
05.
{
06.
echo
"ID buku: "
.
$buku
[
'id'
].
"
"
;
07.
echo
"Author : "
.
$buku
->author.
"
"
;
08.
echo
"Title : "
.
$buku
->title.
"
"
;
09.
echo
"Genre : "
.
$buku
->genre.
"
"
;
10.
echo
"Price : $ "
.
$buku
->price.
"
"
;
11.
echo
"Published Date : "
.
$buku
->publish_date.
"
"
;
12.
echo
"Description : "
.
$buku
->description.
"
"
;
13.
}
14.
?>
Penjelasan:
Setelah dokumen databuku.xml diparsing dengan function simplexml_load_file()
,
maka selanjutnya menampilkan data hasil parsingnya. Sebelum kita
menampilkan data hasil parsing, kita lihat terlebih dahulu format XML
nya dari data buku. Setiap data buku, ditandai dengan tag pembuka
dan ditutup dengan . Sedangkan properti dari
buku, seperti author, title dan sebagainya terdapat di dalam tag
… tersebut.
Nah… oleh karena itu untuk menampilkan author dari buku, gunakan perintah
1.
$dataxml
->book->author;
Sedangkan untuk menampilkan ID dari buku, gunakan perintah
1.
$dataxml
->book[
'id'
];
karena ID buku merupakan atribut dari
…
Untuk menampilkan semua data buku, kita menggunakan looping foreach()
seperti di atas. Hasil dari script akan diperoleh tampilan seperti di
bawah ini
OK… cara memparsing setiap data buku kita sudah tahu, sekarang bagaimana mengimportnya ke database MySQL.
Terlebih dahulu, kita siapkan tabel untuk menyimpan data bukunya. Berikut ini adalah contoh struktur tabelnya
01.
CREATE
TABLE
`book` (
02.
`id`
varchar
(5),
03.
`author`
varchar
(30),
04.
`title`
varchar
(30),
05.
`genre`
varchar
(30),
06.
`price`
float
,
07.
`publish_date`
date
,
08.
`description` text,
09.
PRIMARY
KEY
(`id`)
10.
)
Untuk proses import data, kita harus memodifikasi script di atas menjadi seperti di bawah ini.
01.
02.
03.
mysql_connect(
"dbhost"
,
"dbuser"
,
"dbpass"
);
04.
mysql_select_db(
"dbname"
);
05.
06.
$dataxml
= simplexml_load_file(
'databuku.xml'
);
07.
08.
foreach
(
$dataxml
->book
as
$buku
)
09.
{
10.
$id
=
$buku
[
'id'
];
11.
$author
=
$buku
->author;
12.
$title
=
addslashes
(
$buku
->title);
13.
$genre
=
$buku
->genre;
14.
$price
=
$buku
->price;
15.
$publish_date
=
$buku
->publish_date;
16.
$description
=
$buku
->description;
17.
$query
= "INSERT INTO book
18.
VALUES (
'$id'
,
'$author'
,
'$title'
,
'$genre'
,
'$price'
,
'$publish_date'
,
'$description'
) ";
19.
mysql_query(
$query
);
20.
}
21.
22.
?>
Karena pada dasarnya konsep import data adalah proses menyisipkan
data ke dalam tabel, maka digunakanlah query SQL “INSERT INTO” pada
script di atas.
Oya… mungkin Anda bertanya, mengapa untuk ‘title’ dari buku diberikan perintah addslashes()
pada script di atas? Ya… alasannya adalah karena bila kita lihat pada
data buku yang ada dalam dokumen XML di atas, maka terdapat buku yang
titlenya mengandung tanda petik yaitu “XML Developer’s Guide“. Bila Anda tidak menggunakan addslashes()
maka data tersebut tidak aka tersimpan karena terdapat error pada proses insert data. Dengan diberikannya addslashes()
maka judul buku tersebut menjadi “XML Developer\’s Guide”.
Hasil dari proses import dengan script PHP di atas tampak pada tampilan tabel berikut ini
Mudah bukan caranya? Selamat mencoba ya. Oya.. mudah-mudahan artikel
ini memberikan ide bagi Anda untuk membuat web based tool yang berguna
dalam proses import data dari XML ke MySQL.
EmoticonEmoticon