tutorial android parsing data xml

Upload: halmenia-jaya-wisata

Post on 29-Oct-2015

163 views

Category:

Documents


0 download

DESCRIPTION

tutorial

TRANSCRIPT

Tutorial Android : Cara Sederhana Parsing Data XML di Android

Hari senin datang lagi, hari yang dimana kata orang-orang itu membosankan. Karena bagi mereka yang sudah bekerja ataupun masih nangkring di bangku sekolah, akan dipadati dengan segudang aktivitas. Tak terkecuali saya, hari ini terasa begitu membosankan. Diawali dengan masuk kuliah di jam pertama dan ternyata dosennya (mungkin lagi malas) tidak mengajar. Di jam selanjutnya, ada mata kuliah design pattern yang kurang begitu greget. Jadilah saya nangkring di lantai 2 untuk melanjutkan sedikit pekerjaan yang siangnya akan saya bawa ke tempat client. Mungkin nasib lagi apes kali yaw, sudah saya datangi kesana ternyata si client gak nongol-nongol. Pas di perjalanan pulang sambil kadang-kadang melamun, tiba-tiba terlintas di pikiran saya bagaimana caranya mem-parsing data XML di aplikasi android. Kebetulan kemarin saya sudah membahas cara parsing data JSON ke dalam ListView, tak lengkap rasanya meninggalkan temannya yang satu ini.

Kenapa XML??? Mungkin karena si doi lebih populer terlebih dahulu daripada si JSON. Banyak aplikasi-aplikasi yang masih menggunakan format XML sebagai media pertukaran data. Padahal jika diadu, si JSON lebih unggul jauh dari si XML. Mulai dari kecepatan, penulisan yang gampang dan coding untuk parsing yang lebih ringkas+sederhana. Nah, di postingan kali ini saya akan berbagi sedikit cara untuk melakukan parsing data XML dan menampilkannya ke dalam textview. Referensinya saya ambil dari http://developer.android.com.

1. Seperti biasa, buat sebuah android project baru dengan detail seperti gambar di bawah ini :

2. Disini saya menggunakan DOM (Document Object Model) sebagai alat parsing-nya. DOM adalah object model standar untuk HTML dan XML yang sifatnya independent. Diawali dengan membaca link sumber dari file XML dengan membuat HTTP Request. Selanjutnya mem-parsing XML dan mengambil elemen DOM dari file XML. Terakhir, mengambil isi dari setiap elemen sesuai dengan nama node elemen. Buat file class baru dengan XMLParser.java.

1public class XMLParser {

2

3public XMLParser() {

4

5}

6

7public String baca_xml_url(String url) {

8String xml = null;

9

10try {

11DefaultHttpClient httpClient = new DefaultHttpClient();

12HttpPost httpPost = new HttpPost(url);

13

14HttpResponse httpResponse = httpClient.execute(httpPost);

15HttpEntity httpEntity = httpResponse.getEntity();

16xml = EntityUtils.toString(httpEntity);

17

18} catch (UnsupportedEncodingException e) {

19e.printStackTrace();

20} catch (ClientProtocolException e) {

21e.printStackTrace();

22} catch (IOException e) {

23e.printStackTrace();

24}

25return xml;

26}

27

28public Document ambil_elemen_dom(String xml){

29Document doc = null;

30DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

31try {

32

33DocumentBuilder db = dbf.newDocumentBuilder();

34

35InputSource is = new InputSource();

36is.setCharacterStream(new StringReader(xml));

37doc = db.parse(is);

38

39} catch (ParserConfigurationException e) {

40Log.e("Error: ", e.getMessage());

41return null;

42} catch (SAXException e) {

43Log.e("Error: ", e.getMessage());

44return null;

45} catch (IOException e) {

46Log.e("Error: ", e.getMessage());

47return null;

48}

49

50return doc;

51}

52

53public final String ambil_elemen_nilai( Node elem ) {

54Node child;

55if( elem != null){

56if (elem.hasChildNodes()){

57for( child = elem.getFirstChild(); child != null; child = child.getNextSibling() ){

58if( child.getNodeType() == Node.TEXT_NODE ){

59return child.getNodeValue();

60}

61}

62}

63}

64return "";

65}

66

67public String ambil_nilai(Element item, String str) {

68NodeList n = item.getElementsByTagName(str);

69return this.ambil_elemen_nilai(n.item(0));

70}

71}

3. Sekarang kita akan memanfaatkan class XMLParser di atas untuk melakukan parsing data XML. Buka file ParsingXmlActivity.java, ketikkan kode di bawah ini. Datanya tidak saya tampilkan ke dalam ListView, tapi hanya ke dalam sebuah textview. Untuk menampilkan hasil parsing data XML ke ListView akan saya jelaskan di tutorial selanjutnya .

1public class ParsingXmlActivity extends Activity {

2

3static final String URL = "http://10.0.2.2/json-parsing/artikel-xml.php";

4static final String AR_ITEM = "item";

5static final String AR_JUDUL = "judul";

6static final String AR_WAKTU = "waktu";

7static final String AR_ISI = "isi";

8

9@Override

10public void onCreate(Bundle savedInstanceState) {

11super.onCreate(savedInstanceState);

12setContentView(R.layout.main);

13

14XMLParser parser = new XMLParser();

15String xml = parser.baca_xml_url(URL);

16Document doc = parser.ambil_elemen_dom(xml);

17

18NodeList nd = doc.getElementsByTagName(AR_ITEM);

19

20String isi = "";

21TextView judul = (TextView) findViewById(R.id.isi);

22

23for (int i = 0; i < nd.getLength(); i++) {

24Element e = (Element) nd.item(i);

25isi += parser.ambil_nilai(e, AR_JUDUL)+"\n"

26+parser.ambil_nilai(e, AR_WAKTU)+"\n"

27+parser.ambil_nilai(e, AR_ISI).substring(0, 100)+"...\n\n\n";

28}

29

30judul.setText(isi);

31

32}

33}

4. Karena textview tidak bisa diatur otomatis bisa melakukan scrooling, maka saya tambahkan ScroolView agar datanya terlihat semua sampai ke bawah. Buka file main.xml dan ketikkan kode di bawah ini.

1

2

7

10

11

18

19

20

5. Tambahkan permission untuk mengakses internet pada file AndroidManifest.xml.

1

2

6

7

8

9

12

15

16

17

18

19

20

21

22

23

24

6. Jalankan via emulator dan hasilnya kira-kira seperti gambar di bawah ini :

Memang agak lebih banyak coding yang dibutuhkan untuk melakukan parsing data XML dibandingkan dengan JSON. Contoh data yang terdapat di dalam file XML-nya saya ambil dari data yang sama pada tutorial parsing data JSON yang kemarin, hanya saja formatnya saya ubah ke dalam format XML. Nah, sekarang kita sudah mempunyai modal yang cukup untuk mulai membangun sebuah aplikasi database di platform android. Tinggal sekarang melatih dan mengasah kreatifitas kita yang sedang terpendam. OK deh, sekian dulu postingan saya kali ini dan semoga bermanfaat untuk kita semua.

Happy Blogging and Keep Coding