dom parser.docx

23
DOM PARSER DOM. The Document Object Model (DOM) adalah cross-platform dan bahasa -independen konvensi untuk mewakili dan berinteraksi dengan benda-benda di HTML , XHTML dan XML dokumen. [1] Objek dalam pohon DOM dapat diatasi dan dimanipulasi dengan menggunakan metode pada objek . Antarmuka publik dari DOM ditetapkan dalam Surat antarmuka pemrograman aplikasi (API). Sejarah Document Object Model adalah terkait dengan sejarah " perang browser "dari akhir 1990-an antara Netscape Navigator dan Microsoft Internet Explorer , serta dengan yang JavaScript dan JScript , yang pertama bahasa scripting untuk diterapkan secara luas dalam mesin tata letak dari web browser . Legacy DOM JavaScript dirilis oleh Netscape Communications pada tahun 1996 dalam Netscape Navigator 2.0. Pesaing Netscape, Microsoft , merilis Internet Explorer 3.0 kemudian tahun yang sama dengan pelabuhan JavaScript yang disebut JScript. JavaScript dan JScript membiarkan pengembang web membuat halaman web dengan sisi klien interaktivitas. Fasilitas terbatas untuk mendeteksi user-generated peristiwa dan memodifikasi dokumen HTML dalam generasi pertama dari bahasa ini akhirnya dikenal sebagai "DOM Level 0" atau "Legacy DOM." Tidak ada standar independen dikembangkan untuk DOM Level 0, tapi itu sebagian dijelaskan dalam spesifikasi HTML 4 . Legacy DOM terbatas dalam jenis elemen yang dapat diakses. Form , hubungan dan citra unsur dapat direferensikan dengan nama hirarki yang dimulai dengan objek dokumen root. Sebuah nama hirarkis bisa memanfaatkan baik nama atau indeks berurutan elemen dilalui. Sebagai contoh, sebuah elemen form input dapat diakses sebagai "document.formName.inputName" atau "document.forms [0]. elemen [0]." The Legacy DOM memungkinkan bentuk client-side validasi dan populer " rollover "efek.

Upload: hzanmail

Post on 13-Feb-2015

81 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: DOM PARSER.docx

DOM PARSER

DOM.

The Document Object Model (DOM) adalah cross-platform dan bahasa -independen konvensi untuk mewakili dan berinteraksi dengan benda-benda di HTML , XHTML dan XML dokumen. [1] Objek dalam pohon DOM dapat diatasi dan dimanipulasi dengan menggunakan metode pada objek . Antarmuka publik dari DOM ditetapkan dalam Surat antarmuka pemrograman aplikasi (API). Sejarah Document Object Model adalah terkait dengan sejarah " perang browser "dari akhir 1990-an antara Netscape Navigator dan Microsoft Internet Explorer , serta dengan yang JavaScript dan JScript , yang pertama bahasa scripting untuk diterapkan secara luas dalam mesin tata letak dari web browser .

Legacy DOM

JavaScript dirilis oleh Netscape Communications pada tahun 1996 dalam Netscape Navigator 2.0. Pesaing Netscape, Microsoft , merilis Internet Explorer 3.0 kemudian tahun yang sama dengan pelabuhan JavaScript yang disebut JScript. JavaScript dan JScript membiarkan pengembang web membuat halaman web dengan sisi klien interaktivitas. Fasilitas terbatas untuk mendeteksi user-generated peristiwa dan memodifikasi dokumen HTML dalam generasi pertama dari bahasa ini akhirnya dikenal sebagai "DOM Level 0" atau "Legacy DOM." Tidak ada standar independen dikembangkan untuk DOM Level 0, tapi itu sebagian dijelaskan dalam spesifikasi HTML 4 .

Legacy DOM terbatas dalam jenis elemen yang dapat diakses. Form , hubungan dan citra unsur dapat direferensikan dengan nama hirarki yang dimulai dengan objek dokumen root. Sebuah nama hirarkis bisa memanfaatkan baik nama atau indeks berurutan elemen dilalui. Sebagai contoh, sebuah elemen form input dapat diakses sebagai "document.formName.inputName" atau "document.forms [0]. elemen [0]."

The Legacy DOM memungkinkan bentuk client-side validasi dan populer " rollover "efek.

Menengah DOM

Pada tahun 1997, Netscape dan Microsoft merilis versi 4.0 dari Netscape Navigator dan Internet Explorer masing-masing, menambahkan dukungan untuk Dynamic HTML (DHTML), fungsi yang memungkinkan perubahan ke dokumen HTML dimuat. DHTML diperlukan ekstensi untuk objek dokumen dasar yang tersedia di Legacy DOM implementasi. Meskipun Legacy DOM implementasi sebagian besar kompatibel sejak JScript didasarkan pada JavaScript, DOM ekstensi DHTML dikembangkan secara paralel oleh masing-masing pembuat peramban dan tetap kompatibel. Ini versi DOM dikenal sebagai "Intermediate DOM."

Standarisasi

The World Wide Web Consortium (W3C), didirikan pada tahun 1994 untuk mempromosikan standar terbuka untuk World Wide Web , membawa Netscape Communications dan Microsoft bersama-sama dengan perusahaan lain untuk mengembangkan standar untuk

Page 2: DOM PARSER.docx

bahasa scripting Browser, yang disebut " ECMAScript . " Versi pertama dari standar diterbitkan pada tahun 1997. Rilis berikutnya dari JavaScript dan JScript akan menerapkan standar ECMAScript untuk kompatibilitas cross-browser yang lebih besar.

Setelah merilis ECMAScript, W3C mulai bekerja pada sebuah DOM standar. DOM standar awal, yang dikenal sebagai "DOM Level 1," direkomendasikan oleh W3C pada akhir tahun 1998. Tentang waktu yang sama, Internet Explorer 5,0 dikirimkan dengan dukungan terbatas untuk DOM Level 1. DOM Level 1 memberikan model lengkap untuk HTML atau seluruh XML dokumen, termasuk sarana untuk mengubah bagian manapun dari dokumen. Browser non-conformant seperti Internet Explorer 4.x dan Netscape 4.x masih banyak digunakan hingga akhir tahun 2000.

DOM Level 2 diterbitkan pada akhir 2000. Ini memperkenalkan " getElementById "fungsi serta model acara dan dukungan untuk ruang nama XML dan CSS.

DOM Level 3, rilis saat spesifikasi DOM, yang diterbitkan pada bulan April 2004, menambahkan dukungan untuk XPath dan keyboard penanganan event , serta antarmuka untuk serialisasi dokumen sebagai XML.

DOM Level 4 saat ini sedang dikembangkan. Draft versi 6 dirilis pada Desember 2012. [2]

Pada tahun 2005, sebagian besar W3C DOM yang baik didukung oleh browser umum ECMAScript-enabled, termasuk Microsoft Internet Explorer versi 6 (dari tahun 2001), Opera , Safari dan Gecko browser berbasis (seperti Mozilla , Firefox , Thunderbird dan Camino ).

Aplikasi

Web browser

Untuk membuat dokumen seperti halaman HTML, web browser yang paling menggunakan internal model mirip dengan DOM. Node dari setiap dokumen disusun dalam suatu struktur pohon , yang disebut pohon DOM, dengan simpul paling atas bernama "objek Document". Ketika sebuah halaman HTML yang diberikan dalam browser, download browser HTML ke dalam memori lokal dan secara otomatis mem-parsing untuk menampilkan halaman pada layar. DOM juga merupakan cara JavaScript mentransmisikan keadaan browser dalam halaman HTML.

Implementasi

Karena DOM mendukung navigasi arah manapun (misalnya, orang tua dan saudara sebelumnya) dan memungkinkan untuk modifikasi sewenang-wenang, sebuah implementasi harus setidaknya buffer dokumen yang telah baca sejauh ini (atau beberapa bentuk diurai dari itu). [ rujukan? ]

Tata Letak mesin

Web browser mengandalkan mesin tata letak untuk mengurai HTML ke dalam DOM. Beberapa mesin tata letak seperti Trident / MSHTML dan Presto berhubungan terutama atau eksklusif dengan masing-masing browser tertentu seperti Internet Explorer dan Opera.

Page 3: DOM PARSER.docx

Lainnya, seperti WebKit dan Gecko , dibagi oleh sejumlah browser, seperti Google Chrome , Firefox dan Safari . Mesin tata letak yang berbeda menerapkan standar DOM untuk berbagai tingkat kepatuhan.

SAX.

SAX (Simple API untuk XML) adalah acara berbasis akses sekuensial parser API dikembangkan oleh milis XML-DEV untuk XML dokumen. [1] SAX menyediakan mekanisme untuk membaca data dari dokumen XML yang merupakan alternatif yang disediakan oleh dengan Document Object Model (DOM). Dimana DOM beroperasi pada dokumen secara keseluruhan, parser SAX beroperasi pada setiap bagian dari dokumen XML secara berurutan.

Tidak seperti DOM , tidak ada spesifikasi formal untuk SAX. The Java pelaksanaan SAX dianggap normatif . [2] SAX proses dokumen negara-ketergantungan, berbeda dengan DOM yang digunakan untuk pengolahan negara independen dokumen XML.

Manfaat

SAX parser memiliki beberapa manfaat yang lebih parser DOM gaya. Sebuah parser SAX hanya perlu melaporkan setiap peristiwa parsing seperti yang terjadi, dan biasanya membuang hampir semua informasi yang pernah melaporkan (itu, bagaimanapun, tetap beberapa hal, misalnya daftar semua elemen yang belum ditutup lagi, dalam rangka untuk menangkap kesalahan kemudian seperti akhir-tag dalam urutan yang salah). Dengan demikian, memori minimum yang diperlukan untuk parser SAX sebanding dengan kedalaman maksimum file XML (yaitu, dari pohon XML) dan data maksimum yang terlibat dalam acara XML tunggal (seperti nama dan atribut dari satu start- tag, atau isi dari suatu instruksi pemrosesan, dll).

Ini banyak memori biasanya dianggap diabaikan. Sebuah DOM parser, sebaliknya, biasanya membangun representasi pohon seluruh dokumen dalam memori untuk memulai dengan, sehingga penggunaan memori yang meningkat dengan panjang seluruh dokumen. Ini membutuhkan waktu dan ruang untuk dokumen besar (alokasi memori dan konstruksi struktur data memakan waktu). The kompensasi keuntungan, tentu saja, adalah bahwa sekali dimuat setiap bagian dari dokumen dapat diakses dalam urutan apapun.

Karena sifat-event dari SAX, pengolahan dokumen umumnya jauh lebih cepat daripada parser DOM gaya, asalkan pengolahan dapat dilakukan dalam start-to-end lulus. Banyak tugas, seperti pengindeksan, konversi ke format lain, format yang sangat sederhana, dan sejenisnya, dapat dilakukan dengan cara itu. Tugas lainnya, seperti sortasi, menata ulang bagian, mendapatkan dari link ke target, mencari informasi pada satu elemen untuk membantu memproses satu nanti, dan sejenisnya, membutuhkan mengakses struktur dokumen perintah yang kompleks dan akan jauh lebih cepat dengan DOM dibandingkan dengan melewati beberapa SAX.

Beberapa implementasi tidak rapi sesuai kategori baik: pendekatan DOM dapat menjaga sikap gigih data pada disk, cerdik diselenggarakan untuk kecepatan (editor seperti SoftQuad

Page 4: DOM PARSER.docx

Penulis / Editor dan besar-dokumen browser / pengindeks seperti Dynatext melakukan hal ini), sedangkan pendekatan SAX cerdik bisa cache informasi untuk digunakan kemudian (setiap memvalidasi parser SAX menyimpan informasi lebih dari yang dijelaskan di atas). Implementasi tersebut mengaburkan DOM / SAX pengorbanan, tetapi seringkali sangat efektif dalam prakteknya.

Karena sifat dari DOM, streaming membaca dari disk memerlukan teknik seperti evaluasi malas , cache, memori virtual, struktur data persisten, atau teknik lain (salah satu teknik tersebut diungkapkan dalam [4] ). Pengolahan dokumen XML lebih besar daripada memori utama kadang-kadang dianggap mustahil karena beberapa parser DOM tidak mengizinkannya. Namun, hal yang tidak kalah mungkin daripada menyortir dataset besar daripada memori utama menggunakan ruang disk sebagai memori untuk menghindari keterbatasan ini. [5]

Kerugian

-Event model SAX berguna untuk parsing XML, tetapi memiliki kelemahan tertentu.

Hampir semua jenis validasi XML membutuhkan akses ke dokumen penuh. Yang paling sepele contohnya adalah bahwa atribut dideklarasikan dalam DTD menjadi tipe IDREF, mensyaratkan bahwa ada sebuah elemen dalam dokumen yang menggunakan nilai yang sama untuk atribut ID. Untuk memvalidasi ini dalam parser SAX, seseorang harus melacak semua atribut ID (salah satu dari mereka mungkin berakhir menjadi direferensikan oleh atribut IDREF di akhir), serta setiap atribut IDREF sampai diselesaikan. Demikian pula, untuk memvalidasi bahwa setiap elemen memiliki urutan diterima elemen anak, informasi tentang elemen anak apa yang telah dilihat setiap orang tua, harus disimpan sampai orang tua menutup.

Selain itu, beberapa jenis pengolahan XML hanya memerlukan memiliki akses ke seluruh dokumen. XSLT dan XPath , misalnya, harus dapat mengakses setiap node pada setiap saat dalam parsing pohon XML. Editor dan browser juga harus mampu untuk menampilkan, memodifikasi, dan mungkin memvalidasi ulang setiap saat. Sementara SAX parser juga dapat digunakan untuk membangun pohon itu awalnya, SAX tidak memberikan bantuan untuk pengolahan seperti keseluruhan.

pengolahan XML dengan SAX

Sebuah parser yang menerapkan SAX (yaitu, Parser SAX) berfungsi sebagai parser aliran, dengan -event API. [1] Pengguna mendefinisikan sejumlah metode callback yang akan dipanggil ketika peristiwa terjadi selama parsing. Peristiwa SAX termasuk (antara lain):

Teks node XML XML Element Mulai dan Berakhir XML Pengolahan Instruksi XML Komentar

Beberapa peristiwa sesuai dengan objek XML yang mudah dikembalikan sekaligus, seperti komentar. Namun, elemen XML dapat berisi banyak objek XML lainnya, sehingga SAX mewakili mereka seperti halnya XML itu sendiri: oleh salah satu acara di awal, dan di akhir acara. Berbicara dengan benar, antarmuka SAX tidak berurusan dengan unsur-unsur, tetapi

Page 5: DOM PARSER.docx

dalam peristiwa yang sebagian besar sesuai dengan tag. Parsing SAX adalah searah, data yang sebelumnya parsing tidak dapat membaca kembali tanpa memulai operasi parsing lagi.

Ada banyak SAX-seperti implementasi yang ada. Dalam prakteknya, rincian bervariasi, tetapi model keseluruhan adalah sama. Sebagai contoh, atribut XML biasanya diberikan sebagai nama dan argumen nilai yang dikirimkan ke acara elemen, tetapi juga dapat diberikan sebagai peristiwa terpisah, atau melalui koleksi hash atau mirip semua atribut. Untuk yang lain, beberapa implementasi memberikan "Init" dan "Fin" callback untuk sangat awal dan akhir dari parsing, yang lainnya tidak. Nama-nama yang tepat untuk jenis acara yang diberikan juga sedikit berbeda antara implementasi.

Contoh

Mengingat dokumen XML berikut:

<source lang="xml"> <? Versi xml = "1.0" encoding = "UTF-8"> <DocumentElement Param="value"> <FirstElement> ¶ Beberapa Teks </ FirstElement> <? Some_pi some_attr = "some_value"?> <SecondElement Param2="something"> Pra-Teks <Inline> teks Inlined </ Inline> Pasca teks. </ SecondElement> </ DocumentElement> </ Sumber>

Dokumen ini XML, ketika melewati sebuah parser SAX, akan menghasilkan urutan kejadian seperti berikut:

XML Element awal, bernama documentElement, dengan param atribut sama dengan "nilai"

XML Element awal, bernama FirstElement XML Text node, dengan data sama dengan "¶ Beberapa Teks" (catatan: spasi putih

tertentu dapat diubah) Elemen end XML, bernama FirstElement Acara Instruksi Pengolahan, dengan target some_pi dan data some_attr =

"some_value" (isi setelah target hanya teks, namun sangat umum untuk meniru sintaks atribut XML, seperti dalam contoh ini)

XML Element awal, bernama SecondElement, dengan param2 atribut sama dengan "sesuatu"

XML Text node, dengan data sama dengan "Pre-Teks" XML Element awal, bernama Inline XML Text node, dengan data sama dengan "text Inlined" Elemen end XML, bernama Inline XML Text node, dengan data sama dengan "Post-teks." Elemen end XML, bernama SecondElement Elemen end XML, bernama documentElement

Page 6: DOM PARSER.docx

Perhatikan bahwa baris pertama dari contoh di atas adalah Deklarasi XML dan bukan instruksi pemrosesan, karena itu tidak akan dilaporkan sebagai peristiwa instruksi pengolahan (meskipun beberapa implementasi SAX memberikan acara terpisah hanya untuk deklarasi XML).

Hasilnya di atas dapat bervariasi: spesifikasi SAX sengaja menyatakan bahwa bagian yang diberikan teks yang dapat dilaporkan sebagai beberapa peristiwa sekuensial. Banyak parser, misalnya, kembali peristiwa teks terpisah untuk referensi karakter numerik. Jadi, dalam contoh di atas, parser SAX dapat menghasilkan berbagai seri peristiwa, bagian yang mungkin mencakup:

XML Element awal, bernama FirstElement XML Text node, dengan data sama dengan "¶" (karakter Unicode U +00 b6) XML Text node, dengan data sama dengan "Beberapa Teks" Elemen end XML, bernama FirstElement

CONTOH DOM PARSER.

/ / Parser Simple XML dengan DOM

01.<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">package parser;</span> paket parser;</span>

02.

03.<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">import java.io.File;</span> impor java.io.File;</span>

04.<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">import java.io.IOException;</span> java.io.IOException impor;</span>

05.

06.<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">import javax.xml.parsers.DocumentBuilderFactory;</span> impor javax.xml.parsers.DocumentBuilderFactory;</span>

07.<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">import javax.xml.parsers.ParserConfigurationException;</span> impor javax.xml.parsers.ParserConfigurationException;</span>

08.

Page 7: DOM PARSER.docx

09.<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">import org.w3c.dom.Document;</span> impor org.w3c.dom.Document;</span>

10.<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">import org.w3c.dom.Node;</span> impor org.w3c.dom.Node;</span>

11.<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">import org.w3c.dom.NodeList;</span> impor org.w3c.dom.NodeList;</span>

12.<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">import org.xml.sax.SAXException;</span> org.xml.sax.SAXException impor;</span>

13.

14.<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">public class DOMParser</span> DOMParser public class</span>

15.<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">{</span> {</span>

16.<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">private Document doc = null;</span> Dokumen pribadi doc = null;</span>

17.

18.<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">public DOMParser()</span> DOMParser publik ()</span>

19.<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">{</span> {</span>

20.<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">try</span> coba</span>

21.<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">{</span> {</span>

22.<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">doc = parserXML(new File("parser/file.xml"));</span> doc = parserXML (new File ("parser / file.xml"));</span>

Page 8: DOM PARSER.docx

23.

24.<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">visit(doc, 0);</span> kunjungi (doc, 0);</span>

25.<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">}</span> }</span>

26.<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">catch(Exception error)</span> catch (Exception error)</span>

27.<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">{</span> {</span>

28.<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">error.printStackTrace();</span> error.printStackTrace ();</span>

29.<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">}</span> }</span>

30.<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">}</span> }</span>

31.

32.<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">public void visit(Node node, int level)</span> Kunjungan public void (Node node, tingkat int)</span>

33.<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">{</span> {</span>

34.<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">NodeList nl = node.getChildNodes();</span> NodeList nl = node.getChildNodes ();</span>

35.

36.<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">for(int i=0, cnt=nl.getLength(); i<cnt; i++)</span> for (int i = 0, cnt = nl.getLength (); i <cnt; i + +)</span>

Page 9: DOM PARSER.docx

37.<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">{</span> {</span>

38.<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">System.out.println("["+nl.item(i)+"]");</span> System.out.println

("[" + nl.item (i) + "]");</span>

39.

40.<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">visit(nl.item(i), level+1);</span> kunjungi (nl.item (i), tingkat +1);</span>

41.<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">}</span> }</span>

42.<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">}</span> }</span>

43.

44.<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">public Document parserXML(File file) throws SAXException, IOException, ParserConfigurationException</span> Dokumen publik parserXML (Berkas)

throws SAXException, IOException, ParserConfigurationException</span>

45.<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">{</span> {</span>

46.<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">return DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(file);</span> kembali DocumentBuilderFactory.newInstance () newDocumentBuilder () mengurai (file)..;</span>

47.<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">}</span> }</span>

48.

49.<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">public static void main(String[] args)</span> public static void main (String [] args)</span>

Page 10: DOM PARSER.docx

50.<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">{</span> {</span>

51.<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">new DOMParser();</span> DOMParser baru ();</span>

52.<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">}</span> }</span>

53.<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">}</span> }</span>

PHP Simple HTML DOM Parser: Mengedit Elemen HTML dalam PHP

Simple HTML DOM parser adalah 5 + kelas PHP yang membantu Anda memanipulasi elemen HTML. Kelas tidak terbatas pada HTML yang valid, tetapi juga dapat bekerja dengan kode HTML yang tidak lulus validasi W3C. Obyek dokumen dapat ditemukan menggunakan selector, mirip dengan yang di jQuery. Anda dapat menemukan unsur menurut id, kelas, tag, dan banyak lagi. Elemen DOM juga dapat ditambahkan, dihapus atau diubah. Meskipun ini adalah sangat kuat dan mudah-ke-menggunakan DOM editing script PHP , Anda harus berhati-hati tentang kebocoran memori. Saya akan menjelaskan bagaimana untuk menghindari kebocoran nanti dalam tutorial ini.

Memulai dengan PHP Simple HTML DOM Parser

Setelah meng-upload file kelas, HTML contoh kelas DOM Sederhana harus dibuat. DOM objek kelas dapat dibuat dalam tiga cara:

1. Memuat HTML dari URL 2. Memuat HTML dari string 3. Memuat HTML dari file

<? Php / / Buat objek DOM, Anda harus melakukan ini untuk masing-masing cara $ Html = new simple_html_dom ();

/ / Beban HTML dari URL $ Html-> load_file ('http://www.mydomain.com/');

/ / Beban HTML dari string $ Html-> load ('! <html> <body> Halo dunia </ body> </ html>');

/ / Beban HTML dari sebuah file HTML $ Html-> load_file ('path / ke / file / test.html'); ?>

Jika Anda ingin memuat HTML dari string, tetapi Anda perlu lebih banyak kontrol terhadap permintaan HTTP, saya sarankan menggunakan CURL untuk mengambil HTML ke string, dan kemudian memuat objek kelas DOM dari suatu string.

Page 11: DOM PARSER.docx

Cari Elemen HTML dengan PHP Simple HTML DOM Parser

HTML elemen DOM ditemukan menggunakan menemukan fungsi. Ini mengembalikan sebuah objek atau array obyek. Benda-benda ini mirip dengan objek pertama, sehingga Anda dapat menggunakan semua fungsi kelas pada mereka. Mari kita lihat beberapa contoh: <? Php / / Cari semua elemen dengan nama tag ega Perhatikan bahwa ia mengembalikan sebuah array dengan elemen objek. $ A = $ html-> find ('a');

/ / Cari (N) th elemen, di mana elemen pertama adalah 0. Ia mengembalikan obyek atau null jika tidak ditemukan. $ A = $ html-> find ('a', 0);

/ / Cari elemen mana id adalah sama dengan nilai tertentu misalnya div dengan id = "utama" $ Utama = $ html-> find ('div [id = main]', 0);

/ / Cari semua elemen yang memiliki atribut id. Misalnya menemukan semua divs dengan id atribut. $ Divs = $ html-> find ('div [id]');

/ / Cari semua elemen yang memiliki atribut id $ Divs = $ html-> find ('[id]'); ?>

Elemen DOM dapat juga ditemukan menggunakan selector, sekali lagi, mirip dengan yang di jQuery: <? Php / / Cari semua elemen mana id = kontainer. Telah diketahui bahwa dua elemen dengan id yang sama tidak valid HTML. $ Ret = $ html-> find ('# container');

/ / Cari semua elemen mana class = foo $ Ret = $ html-> find ('foo.');

/ / Anda juga dapat menemukan dua atau lebih elemen dengan nama tag $ Ret = $ html-> find ('a, img');

/ / Cari dua atau lebih elemen dengan nama tag di mana nilai atribut tertentu ada misalnya menemukan semua jangkar dan gambar dengan judul atribut. $ Ret = $ html-> find ('a [title], img [title]'); ?>

Penyeleksi keturunan juga diperbolehkan: <? Php / / Cari semua <li> di <ul> $ Ret = $ html-> find ('ul li');

/ / Cari seluruh <li> dengan class = "dipilih" di <ul> $ Ret = $ html-> find ('ul li.selected'); ?>

Elemen orang tua, anak, dan saudara dapat dipilih dengan menggunakan built-in fungsi:

<? Php / / Mengembalikan induk dari elemen DOM

Page 12: DOM PARSER.docx

$ E-> induk;

/ / Kembali elemen anak dalam array $ E-> anak-anak;

/ / Mengembalikan anak tertentu, dengan nomor, dimulai dari nol. Jika anak tidak ditemukan, null dikembalikan. $ E-> anak (0);

/ / Mengembalikan anak pertama dari elemen, atau null jika tidak ditemukan. $ E-> first_child ();

/ / Mengembalikan anak terakhir dari elemen $ E-> _child terakhir ();

/ / Mengembalikan saudara sebelumnya elemen $ E-> prev_sibling ();

/ / Kembali saudara berikutnya elemen $ E-> next_sibling (); ?>

Gunakan Operator Atribut

Penyeleksi atribut juga dapat digunakan dengan ekspresi reguler sederhana:

[attribute] - Pilih HTML elemen DOM yang memiliki atribut tertentu [attribute=value] - Pilih semua elemen yang memiliki atribut yang ditentukan

dengan nilai tertentu [attribute!=value] - Pilih semua elemen yang tidak memiliki atribut tertentu

dengan nilai tertentu [attribute^=value] - Pilih semua elemen dengan atribut tertentu yang nilainya

diawali dengan nilai tertentu [attribute$=value] - Pilih semua elemen dengan atribut tertentu yang nilainya

berakhir dengan nilai tertentu [attribute*=value] - Pilih semua elemen dengan atribut tertentu yang nilainya

berisi nilai tertentu

Akses DOM Element Atribut dengan PHP Simple HTML DOM Parser

Atribut sebenarnya variabel objek: <? Php / / Dalam contoh ini kita pilih href atribut dari sebuah jangkar. Jika atribut adalah atribut non-nilai (misalnya diperiksa, dipilih ...), itu akan kembali benar atau salah. $ Link = $ a-> href; ?>

Atau:

<? Php $ Link = $ html-> find ('a', 0) -> href;

Page 13: DOM PARSER.docx

?>

Setiap benda memiliki empat atribut khusus:

1. tag - mengembalikan nama tag 2. innertext - mengembalikan HTML batin elemen 3. outertext - mengembalikan HTML luar elemen 4. plaintext - mengembalikan teks biasa (tanpa tag HTML)

Mengedit Elemen HTML dengan PHP Simple HTML DOM Parser

Mengedit atribut mirip dengan membaca nilai mereka: <? Php / / Ubah atau set nilai atribut (jika atribut adalah non-nilai atribut (misalnya diperiksa, dipilih ...), set nilainya ke true atau false). $ A-> href = 'http://www.mydomain.com';

/ / Hapus atribut. $ A-> href = null;

/ / Periksa apakah ada atribut if (isset ($ a-> href)) { / / Lakukan sesuatu di sini } ?>

Tidak ada fungsi khusus untuk menambahkan atau menghapus elemen, tetapi ada solusi: <? Php / / Bungkus elemen $ E-> outertext = '<div class="wrap">'. $ E-> outertext. '<div>';

/ / Hapus elemen $ E-> outertext ='';

/ / Tambahkan elemen $ E-> outertext = $ e-> outertext. '<div> Foo <div>';

/ / Sisipkan elemen $ E-> outertext = '<div> foo <div>'. $ E-> outertext; ?>

Untuk menyimpan dokumen DOM, hanya menempatkan objek DOM ke dalam variabel:

<? Php $ Doc = $ html;

/ / Tampilan halaman echo $ doc; ?>

Hindari PHP Simple HTML DOM Parser Memory Leak

Ada satu hal yang Anda perlu berhati-hati tentang saat menggunakan Simple HTML DOM parser: kebocoran memori. Kebocoran dapat memperlambat website Anda, atau bahkan membuatnya tidak dapat digunakan selama beberapa menit. Jadi, untuk mencegah hal ini,

Page 14: DOM PARSER.docx

setiap objek harus dibersihkan sebelum loading yang baru. Ini bukan masalah untuk bekerja dengan 2 atau 3 objek pada satu waktu, tetapi jika Anda memuat banyak benda tanpa kliring yang sebelumnya, itu bisa menjadi masalah. Obyek dihapus dengan cara berikut: <? Php $ Html-> jelas (); ?>

Menulis file XML di Jawa menggunakan DOM Parser.

Berikut adalah persyaratan untuk file XML kita.

1. Elemen root akan "Karyawan" dengan namespace "http://www.journaldev.com/employee". Elemen root berisi daftar Karyawan.

2. Informasi karyawan akan ditulis dalam "Karyawan" elemen. Akan ada dua karyawan informasi dalam file XML.

3. Setiap karyawan memiliki atribut bernama "id" 4. Elemen Karyawan akan memiliki empat elemen - "nama", "usia", "peran", "gender".

Berikut adalah program java untuk kebutuhan di atas.

1234567891011121314151617181920212223242526272829

package com.journaldev.xml;

import java.io.File;

import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.transform.OutputKeys;import javax.xml.transform.Transformer;import javax.xml.transform.TransformerFactory;import javax.xml.transform.dom.DOMSource;import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.Node;

public class XMLWriterDOM {

    public static void main(String[] args) {        DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();        DocumentBuilder dBuilder;        try {            dBuilder = dbFactory.newDocumentBuilder();            Document doc = dBuilder.newDocument();            //add elements to Document            Element rootElement =                doc.createElementNS("http://www.journaldev.com/employee", "Employees");            //append root element to document            doc.appendChild(rootElement);

Page 15: DOM PARSER.docx

3031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879

            //append first child element to root element            rootElement.appendChild(getEmployee(doc, "1", "Pankaj", "29", "Java Developer", "Male"));

            //append second child            rootElement.appendChild(getEmployee(doc, "2", "Lisa", "35", "Manager", "Female"));

            //for output to file, console            TransformerFactory transformerFactory = TransformerFactory.newInstance();            Transformer transformer = transformerFactory.newTransformer();            //for pretty print            transformer.setOutputProperty(OutputKeys.INDENT, "yes");            DOMSource source = new DOMSource(doc);

            //write to console or file            StreamResult console = new StreamResult(System.out);            StreamResult file = new StreamResult(new File("/Users/pankaj/emps.xml"));

            //write data            transformer.transform(source, console);            transformer.transform(source, file);            System.out.println("DONE");

        } catch (Exception e) {            e.printStackTrace();        }    }

    private static Node getEmployee(Document doc, String id, String name, String age, String role,            String gender) {        Element employee = doc.createElement("Employee");

        //set id attribute        employee.setAttribute("id", id);

        //create name element        employee.appendChild(getEmployeeElements(doc, employee, "name", name));

        //create age element        employee.appendChild(getEmployeeElements(doc, employee, "age", age));

        //create role element        employee.appendChild(getEmployeeElements(doc, employee, "role", role));

        //create gender element        employee.appendChild(getEmployeeElements(doc, employee, "gender", gender));

        return employee;    }

Page 16: DOM PARSER.docx

808182838485868788899091

    //utility method to create text node    private static Node getEmployeeElements(Document doc, Element element, String name, String value) {        Element node = doc.createElement(name);        node.appendChild(doc.createTextNode(value));        return node;    }

}

Notice that I have created two StreamResult , one to print XML in console for debugging purpose and another to write it to file.

Here is the output XML from above program.

123456789101112131415

<?xml version="1.0" encoding="UTF-8" standalone="no"?><Employees xmlns="http://www.journaldev.com/employee"><Employee id="1"><name>Pankaj</name><age>29</age><role>Java Developer</role><gender>Male</gender></Employee><Employee id="2"><name>Lisa</name><age>35</age><role>Manager</role><gender>Female</gender></Employee></Employees>