Membaca file xml lokal dan menguraikannya melalui DOM. Karakteristik penguraian DOM adalah memuat seluruh file xml ke dalam memori untuk membentuk struktur pohon DOM. Struktur pohon nyaman untuk traversal dan manipulasi.
Karakteristik penguraian DOM adalah membaca file xml dan mengubahnya menjadi struktur pohon dom, dan melintasi node.
Ini adalah konsep node W3c
Jika XML berisi data dalam jumlah besar, DOM tidak cocok untuk mengurai XML yang berisi data dalam jumlah besar karena karakteristik memuat XML ke dalam memori sekaligus. Jika xml dalam jumlah besar disertakan, penguraian dengan SAX akan menghemat memori.
Berikut ini contoh penggunaan DOM untuk mengurai file xml:
Struktur file xmlnya adalah sebagai berikut:
<?xml version="1.0" coding="ISO-8859-1"?><bookstore> <book kategori="cooking"> <title lang="en">Bahasa Italia Sehari-hari</title> <author>Giada De Laurentiis </author> <tahun>2005</tahun> <price>30.00</price> </book> <buku kategori="anak-anak"> <title lang="en">Harry Potter</title> <author>J K. Rowling</penulis> <tahun>2005</tahun> <harga>29,99</price> </book> <buku kategori="web"> <title lang="en">XQuery Kick Start</title> <author>James McGovern</ penulis> <tahun>2003</tahun> <harga>49,99</price> </book> <buku kategori="web" cover="paperback"> <title lang="en">Mempelajari XML</title> < penulis>Erik T. Ray</penulis> <tahun>2003</tahun> <harga>39,95</price> </book></toko buku>
Buat kelas untuk mengurai xml sebagai berikut:
paket xml.dom;impor java.io.File;impor javax.xml.parsers.DocumentBuilder;impor javax.xml.parsers.DocumentBuilderFactory;import org.w3c.dom.Document;import org.w3c.dom.Element;import org .w3c.dom.Node;import org.w3c.dom.NodeList;kelas publik ReadXmlFile { public static void main(String[] args) { coba{ File xmlFile = File baru("src/resource/book.xml"); DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance(); Dokumen doc = pembangun.parse(xmlFile); doc.getDocumentElement().normalize(); System.out.println("Elemen akar: "+doc.getDocumentElement().getNodeName()); 0 ; i<nList.getLength();i++){ Node simpul = nList.item(i); System.out.println("Nama node: "+ node.getNodeName()); Elemen ele = (Elemen)node; ------------"); if(node.getNodeType() == Element.ELEMENT_NODE){ System.out.println("kategori buku: "+ ele.getAttribute("category")) ; System.out.println("nama judul: "+ ele.getElementsByTagName("title").item(0).getTextContent()); System.out.println("nama penulis: "+ele.getElementsByTagName("author").item(0).getTextContent()); System.out.println("tahun :"+ele.getElementsByTagName("tahun").item(0).getTextContent()); System.out.println("harga : "+ele.getElementsByTagName("harga").item(0).getTextContent() ); Sistem.keluar.println("-------------------------");
Hasil analisa:
Elemen akar: toko bukuNama simpul: buku--------------------------kategori buku: memasaknama judul: Bahasa Italia Sehari-harinama penulis: Giada De Laurentiistahun :2005harga : 30.00 -------------------------Nama simpul: buku------------------ --- -------kategori buku: anak-anaknama judul: Harry Potternama penulis: J K. Rowlingtahun :2005harga : 29.99----------------------- -- Nama node: buku--------------------------kategori buku: nama judul web: XQuery Kick Startauthor nama: James McGoverntahun: 2003harga: 49,99-------------------------Nama simpul: buku------------- ---------------kategori buku: webnama judul: Learning XMLnama penulis: Erik T. Raytahun:2003harga: 39,95----------------- --------
Di atas adalah untuk mendapatkan nilai yang sesuai melalui nama.
Berikut ini adalah keluaran menggunakan node loop:
Kode untuk mode keluaran simpul loop adalah sebagai berikut:
paket xml.dom;impor java.io.File;impor javax.xml.parsers.DocumentBuilder;impor javax.xml.parsers.DocumentBuilderFactory;impor org.w3c.dom.Document;impor org.w3c.dom.NamedNodeMap;impor org .w3c.dom.Node;impor org.w3c.dom.NodeList; kelas publik ReadXmlFile2 { public static void main(String[] args) { coba{ File xmlFile = File baru("src/resource/book.xml"); ; Pembuat DocumentBuilder = builderFactory.newDocumentBuilder(); Dokumen dokumen = pembangun.parse(xmlFile); doc.getDocumentElement().normalize(); System.out.println("Elemen akar: "+doc.getDocumentElement().getNodeName()); (doc.getChildNodes()); } }catch(Pengecualian e){ e.printStackTrace(); printNode(NodeList nodeList){ System.out.println("------------------------"); // System.out.println(nodeList. getLength()); for(int i = 0; i<nodeList.getLength(); i++){ Node simpul = (Node)nodeList.item(i); if(node.getNodeType() == Node.ELEMENT_NODE){ System.out.println("nama simpul: "+node.getNodeName()); System.out.println("nilai simpul: "+node.getTextContent()); node.getAttributes(); for(int j = 0; j < nodeMap.getLength(); j++){ Node nodenew = nodeMap.item(j); System.out.println("nama simpul "+nodenew.getNodeName()); System.out.println("nilai simpul "+nodenew.getNodeValue()); ()){ printNode(node.getChildNodes());
Outputnya adalah sebagai berikut:
Elemen akar: toko buku------------------------nama simpul: toko bukunilai simpul: Bahasa Italia Sehari-hari Giada De Laurentiis 2005 30,00 Harry Potter J K. Rowling 2005 29,99 XQuery Kick Start James McGovern 2003 49,99 Belajar XML Erik T. Ray 2003 39,95 ------------------ Nama node: nilai booknode: Bahasa Italia Sehari-hari Giada De Laurentiis 2005 30.00 nama simpul kategorinilai simpul memasak------------------------nama simpul: judulnilai simpul: Nilai langnode nama simpul Italia sehari-hari en------- ------------------nama node: nilai authornode: Giada De Laurentiis----------------------- - nama simpul: nilai simpul tahun: 2005------------------------nama simpul: nilai simpul harga: 30,00----------- - ------------nama simpul: nilai simpul buku: Harry Potter J K. Rowling 2005 29,99 nama simpul kategorinilai simpul anak-anak------------------------nama simpul: judulnilai simpul: Harry Potternama simpul nilai langnode en-------- ----------------nama simpul: nilai authornode: J K. Rowling------------------------ -------- nama simpul: nilai simpul tahun: 2005------------------------nama simpul: nilai simpul harga: 29,99---- -------- ------------ nama simpul: nilai simpul buku: XQuery Kick Start James McGovern 2003 49,99 nama simpul kategorinilai simpul web------------------------nama simpul: nilai simpul judul: XQuery Kick Startnode nama nilai langnode en---------- ---------------nama simpul: nilai authornode: James McGovern--------------------------node nama: nilai simpul tahun: 2003-------------------------------- nama simpul: nilai simpul harga: 49,99-------------------- ----------- --------nama node: nilai booknode: Belajar XML Erik T. Ray 2003 39,95 nama node kategorinilai node nama node web nilai covernode paperback------------------------nama node: nilai titlenode: Mempelajari nilai XMLnode nama langnode en---------- - ------------nama node: authornode value: Erik T. Ray--------------------------nama node : nilai simpul tahun: 2003------------------------nama simpul: nilai simpul harga: 39,95-------------- - ----------
Pertanyaan tentang node:
<bookcategory="cooking"> <title lang="en">Bahasa Italia Sehari-hari</title> <author>Giada De Laurentiis</author> <tahun>2005</tahun> <price>30.00</price> </ buku>
Untuk aplikasi buku: doc.getChildNodes() mendapatkan NodeList yang panjang NodeListnya adalah 9
Kesembilan node tersebut adalah sebagai berikut:
simpul judul
simpul lang
Simpul sehari-hari
simpul penulis
Simpul Giada De Laurentiis
simpul tahun
simpul tahun 2005
simpul harga
30.00 simpul