Codeigniter cara mengambil data XML dari Feed RSS

codeigniter ~ parsing XML
halo sobat cangkal, sebelumnya kita mengambil data JSON ke dalam bentuk array PHP, sekarang cangkal suka banget bermain data begituan. kali ini coba mengolah data feed atau RSS dari site lain ke website kita sendiri. padahal apabila melihat plugin wordpress sudah banyak betebaran, tetapi cangkal mau coba belajar dasarnya. kalo dasarnya sudah kuat, pasti mau apa aja kedepannya pasti mudah.

sama halnya JSON menggunakan file_get_contents untuk memanggil variable url, tetapi setelah itu bukan decode tetapi menggunakan simplexmlemelent.
ok? kalau sudah ok mari kita lanjut ya.

1. data feed atau RSS yang cangkal ambil adalah punya detik inet yaitu URL nya http://rss.detik.com/index.php/inet
2. untuk mempermudah cangkal menggunakan framework codeigniter ya sob, nama controllernya Xml dan Viewnya /trial/detik_list.php

lanjut lagi.
pada controller Xml kita buat function detik yang codingnya seperti ini :
public function detik ()
 {
  $feed_url="http://rss.detik.com/index.php/inet";
  $content = file_get_contents($feed_url);
     $x = new SimpleXmlElement($content);
     //print_r($x);
  $data_array = array(
            'datalist' => $x->channel->item
        );

  $this->load->view('trial/detik_list',$data_array);
 }

apabila ingin melihat data parse xml ke dalam bentuk array coba hilangkan tanda comment print_r ($x);
maka nanti muncul data array seperti ini :
SimpleXMLElement Object
(
    [@attributes] => Array
        (
            [version] => 2.0
        )

    [channel] => SimpleXMLElement Object
        (
            [title] => inet.detik
            [link] => http://inet.detik.com/
            [description] => Detik.com sindikasi
            [image] => SimpleXMLElement Object
                (
                    [title] => detikcom - detikInet
                    [link] => http://inet.detik.com/
                    [url] => http://rss.detik.com/images/rsslogo_detikcom.gif
                )

            [item] => Array
                (
                    [0] => SimpleXMLElement Object
                        (
                            [title] => Membongkar Ponsel 4G Murah Andromax B
                            [link] => http://inet.detik.com/readfoto/2017/02/25/181032/3431946/1146/1/membongkar-ponsel-4g-murah-andromax-b
                            [guid] => http://inet.detik.com/readfoto/2017/02/25/181032/3431946/1146/1/membongkar-ponsel-4g-murah-andromax-b
                            [pubDate] => Sat, 25 Feb 2017 19:00:32 +0700
                            [description] => Andromax B menjawab keinginan pengguna di segmen bawah yang ingin merasakan kecepatan 4G. Yuk, tengok unboxing ponsel seharga Rp 850 ribu ini.
                            [enclosure] => SimpleXMLElement Object
                                (
                                    [@attributes] => Array
                                        (
                                            [url] => http://images.detik.com/visual/2017/02/24/b47470ad-3de5-4d8f-9b1d-113d97b9a49a_43.jpg
                                            [length] => 10240
                                            [type] => image/jpg
                                        )

                                )

                        )

                    [1] => SimpleXMLElement Object
                        (
                            [title] => 'Internet Pakai Serat Optik itu Wushhh!'
                            [link] => http://inet.detik.com/read/2017/02/25/165851/3431915/328/internet-pakai-serat-optik-itu-wushhh
                            [guid] => http://inet.detik.com/read/2017/02/25/165851/3431915/328/internet-pakai-serat-optik-itu-wushhh
                            [pubDate] => Sat, 25 Feb 2017 18:02:51 +0700
                            [description] => Dibanding satelit dan microwave, teknologi serat optik (broadband) diklaim mampu memberikan kecepatan lebih tinggi.
                            [enclosure] => SimpleXMLElement Object
                                (
                                    [@attributes] => Array
                                        (
                                            [url] => http://images.detik.com/visual/2016/05/27/e6c75609-a12c-44f8-a8a2-007a950e72b0_169.jpg
                                            [length] => 10240
                                            [type] => image/jpg
                                        )

                                )

                        )

                    .....

                    [9] => SimpleXMLElement Object
                        (
                            [title] => Startup Cetak Online Incar Potensi Rp 121 Triliun
                            [link] => http://inet.detik.com/read/2017/02/25/092725/3431656/319/startup-cetak-online-incar-potensi-rp-121-triliun
                            [guid] => http://inet.detik.com/read/2017/02/25/092725/3431656/319/startup-cetak-online-incar-potensi-rp-121-triliun
                            [pubDate] => Sat, 25 Feb 2017 11:01:25 +0700
                            [description] => Investor tak pandang bulu menggelontorkan jutaan dolar untuk startup. Termasuk yang bergerak di layanan cetak online yang kebagian investasi USD 1,4 juta ini.
                            [enclosure] => SimpleXMLElement Object
                                (
                                    [@attributes] => Array
                                        (
                                            [url] => http://images.detik.com/visual/2017/02/06/7f14ddbf-b052-442a-8d9d-1daa90749cd0_169.jpg
                                            [length] => 10240
                                            [type] => image/jpg
                                        )

                                )

                        )

                )

        )


kelihatan kan sob object mana saja yang ada, sehingga nanti pada view trial/detik_list.php bisa memilah mana saja data yang ingin ditampilkan.

dari sini ok? kalo ok kita lanjut coding ke view trial/detik_list.php, data yang akan cangkal tampilkan adalah, title, link, pubData dan description.

nah coding perulangannya seperti ini nanti sob

<tbody>
            <?php
            $start = 0;
             foreach($datalist as $value)
            {
                ?>
                <tr>
            <td><?php echo ++$start ?></td>
            <td><?php echo $value->title;?></td>
            <td><?php echo $value->link; ?></td>
            <td><?php echo $value->pubDate; ?></td>
            <td><?php echo $value->description; ?></td>
            </tr>
                <?php
            }
            ?>
</tbody>

gimana sob masih bisa mengikuti? sekarang tinggal test di browser, apabila sukses, maka data yang tampil akan seperti ini

codeigniter parsing xml
 ok sobat sampai situ dulu tips kali ini, semoga bermanfaat

update
- ketika tahap parsing cangkal mendapat kendalah error seperti ini
XML parser error: entity not defined
perbaikannya menggunakan funtion PHP html_entity_decode() untuk merubah html entity menjadi characters, sehingga ada penambahan script pada controller fuction detik sebagai berikut
public function detik ()
 {
  $feed_url="http://rss.detik.com/index.php/inet";
  $content = file_get_contents($feed_url);
     $x = new SimpleXmlElement(html_entity_decode($content));
     //print_r($x);
  $data_array = array(
            'datalist' => $x->channel->item
        );

  $this->load->view('trial/detik_list',$data_array);
 }

regards,
cangkal.
Codeigniter cara mengambil data XML dari Feed RSS Codeigniter cara mengambil data XML dari Feed RSS Reviewed by cangkal on 13.01 Rating: 5

Tidak ada komentar:

penulis senang dengan adanya pembaca yang meninggalkan jejak. :)

Diberdayakan oleh Blogger.