Artikel ini bagus ~ ini menjelaskan operasi dasar JDOM. Namun, karena versi JDOM yang digunakan oleh penulis pada saat itu masih relatif lama, beberapa kode akan dikompilasi secara tidak benar! Mendukung Tiongkok juga tidak baik! Oleh karena itu, Firaun melakukan modifikasi pada program tersebut berdasarkan karya penulis aslinya! Memperbaiki kesalahan kompilasi dan karakter Cina yang kacau. Publikasikan agar semua orang dapat mempelajari dan menggunakannya.
Lingkungan pengujian: jdom1.0, weblogic 8.1sp2, Tomcat 5.0, IE 6.0
/====Teks dimulai============== ============/
Java + XML = JDOM!
Ini adalah tujuan dari desainer JDOM. Jika Anda pernah menggunakan SAX atau DOM yang mengganggu untuk memproses XML, Anda pasti tahu mengapa JDOM atau JAXB diperlukan. Pada konferensi JavaOne tahun ini (2002), Jason Hunter, pendiri utama JDOM, memberikan pidato yang luar biasa tentang pengenalan teknologi JDOM, berjudul JDOM Makes XML Easy.
Dapatkan dan instal JDOM
JDOM versi terbaru dapat diunduh di http://jdom.org . Ambil versi biner JDOM 1.0 sebagai contoh. Setelah mengunduh, unzip File jar JDOM adalah file jdom.jar di direktori build dan tambahkan ke jalur kelas. Selain itu, JDOM juga memerlukan dukungan file jar yang ada di direktori lib seperti xerces.jar dan jaxp.jar. Jika kesalahan berikut terjadi saat penggunaan:
java.lang.NoSuchMethodError
atau
java.lang.NoClassDefFoundError: org/xml/sax/SAXNotRecognizedException
Anda perlu memastikan bahwa file xerces.jar terletak sebelum kelas XML lainnya, seperti JAXP atau Crimson, di CLASSPATH. File kelas ini, termasuk versi xerces sebelumnya, mungkin tidak mendukung SAX2.0 atau DOM Level 2. Hal ini mengakibatkan kesalahan di atas.
sebuah contoh sederhana
Metode pemrosesan JDOM agak mirip dengan DOM, tetapi sebagian besar diimplementasikan menggunakan SAX, jadi Anda tidak perlu khawatir tentang kecepatan pemrosesan dan masalah memori. Selain itu, hampir tidak ada antarmuka di JDOM, semua kelas adalah kelas nyata, dan tidak ada kelas pabrik kelas.
Berikut ini adalah file XML yang digunakan sebagai contoh: MyXml.xml
<?xml version="1.0" coding="utf-8"?>
<Perpustakaan>
<buku>
<Judul Buku>Pengantar Pemrograman Java</Judul Buku>
<Penulis>Zhang San</Penulis>
<Rumah Penerbitan>Rumah Penerbitan Elektronik</Rumah Penerbitan>
<Harga>35,0</Harga>
<Tanggal publikasi>07-10-2002</Tanggal publikasi>
</buku>
<buku>
<Judul buku>Penerapan XML di Java</Judul buku>
<Penulis>Li Si</Penulis>
<Rumah Penerbitan>Rumah Penerbitan Harapan</Rumah Penerbitan>
<Harga>92,0</Harga>
<Tanggal publikasi>07-10-2002</Tanggal publikasi>
</buku>
</perpustakaan>
Berikut ini adalah Beans yang mengoperasikan file XML:
paket XmlBean.java jdom.test
;
* Operasi baca dan tulis XML Bean
*/
import java.io.*;
import java.util.*;
import org.jdom.*;
import org.jdom.output.*;
import org.jdom.input.*;
import javax.servlet.*;
impor javax.servlet.http.*;
kelas publik XmlBean {
nama buku String pribadi, penulis, pub, harga, tanggal penerbitan;
String publik getbookname() {
kembalikan nama buku;
}
String publik getauthor() {
kembali penulis;
}
String publik getpub() {
kembali pub;
}
String publik getprice() {
harga pengembalian;
}
String publik getpubdate() {
kembalikan publikasi;
}
public void setbookname(String nama buku) {
this.nama buku = nama buku;
}
public void setauthor(Penulis string) {
this.penulis = penulis;
}
kekosongan publik setpub(String pub) {
ini.pub = pub;
}
public void setprice(Harga string) {
this.harga = harga;
}
public void setpubdate(String pubdate) {
this.pubdate = publikasi;
}
XmlBean publik() {
}
/**
* Baca semua informasi dari file XML
*/
public Vector LoadXML (Jalur string) memunculkan Pengecualian {
Vektor xmlVector = null;
FileInputStream fi = nol;
mencoba {
fi = FileInputStream baru(jalur);
xmlVector = Vektor baru();
SAXBuilder sb = SAXBuilder baru();
Dokumen doc = sb.build(fi);
Elemen root = doc.getRootElement(); // Dapatkan elemen root
Daftar buku = root.getChildren(); // Dapatkan koleksi semua elemen turunan dari elemen root
Buku elemen = null;
XmlBean xml = nol;
for (int i = 0; i < ukuran buku(); i++) {
xml = XmlBean baru();
book = (Element) books.get(i); // Dapatkan elemen buku pertama
xml.setbookname(book.getChild("Nama Buku").getText());
xml.setauthor(book.getChild("Penulis").getText());
xml.setpub(book.getChild("Rumah Penerbitan").getText());
xml.setprice(book.getChild("harga").getText());
xml.setpubdate(book.getChild("Tanggal Publikasi").getText());
xmlVector.tambahkan(xml);
}
} tangkapan (Pengecualian e) {
System.err.println(e + "kesalahan");
} Akhirnya {
mencoba {
fi.close();
} tangkapan (Pengecualian e) {
e.printStackTrace();
}
}
kembalikan xmlVektor;
}
/**
* Hapus informasi yang ditentukan file XML
*/
public static void DelXML (permintaan HttpServletRequest) memunculkan Pengecualian {
FileInputStream fi = nol;
FileOutputStream fo = null;
mencoba {
permintaan.setCharacterEncoding("GBK");
Jalur string = permintaan.getParameter("jalur");
int xmlid = Integer.parseInt(permintaan.getParameter("id"));
fi = FileInputStream baru(jalur);
SAXBuilder sb = SAXBuilder baru();
Dokumen doc = sb.build(fi);
Elemen root = doc.getRootElement(); // Dapatkan elemen root
Daftar buku = root.getChildren(); // Dapatkan koleksi semua elemen turunan dari elemen root
books.remove(xmlid);//Hapus elemen anak pada posisi yang ditentukan
// Indentasi string = " ";
// boolean baris baru = benar;
// XMLOutputter outp = XMLOutputter baru(indent, newLines, "GBK");
Format format = Format.getPrettyFormat();
format.setIndent(" ");
format.setEncoding("utf-8");
Keluaran XMLOutputter = XMLOutputter baru(format);
fo = FileOutputStream baru(jalur);
keluaran.output(doc, fo);
} tangkapan (Pengecualian e) {
System.err.println(e + "kesalahan");
} Akhirnya {
mencoba {
fi.close();
fo.close();
} tangkapan (Pengecualian e) {
e.printStackTrace();
}
}
}
/**
* Tambahkan informasi spesifikasi file XML
*/
public static void AddXML (permintaan HttpServletRequest) memunculkan Pengecualian {
FileInputStream fi = nol;
FileOutputStream fo = null;
mencoba {
permintaan.setCharacterEncoding("GBK");
Jalur string = permintaan.getParameter("jalur");
fi = FileInputStream baru(jalur);
SAXBuilder sb = SAXBuilder baru();
Dokumen doc = sb.build(fi);
Elemen root = doc.getRootElement(); // Dapatkan elemen root
Daftar buku = root.getChildren(); // Dapatkan koleksi semua elemen turunan dari elemen root
String nama buku = permintaan.getParameter("nama buku");
String penulis = permintaan.getParameter("penulis");
String harga = permintaan.getParameter("harga");
String pub = permintaan.getParameter("pub");
String pubdate = permintaan.getParameter("pubdate");
// Teks teks baru;
Elemen buku baru = Elemen baru("buku");
Elemen nama baru = Elemen baru("Judul Buku");
nama baru.setText(nama buku);
buku baru.addContent(nama baru);
Elemen penulis baru = Elemen baru("penulis");
newauthor.setText(penulis);
buku baru.addContent(penulis baru);
Elemen newpub = Elemen baru("Rumah Penerbitan");
newpub.setText(pub);
buku baru.addContent(newpub);
Elemen harga baru = Elemen baru("harga");
harga baru.setText(harga);
buku baru.addContent(harga baru);
Elemen tanggal baru = Elemen baru("Tanggal publikasi");
tanggal baru.setText(tanggal terbit);
buku baru.addContent(tanggal baru);
books.add(newbook);//Tambahkan elemen anak
// Indentasi string = " ";
// boolean baris baru = benar;
// XMLOutputter outp = XMLOutputter baru(indent, newLines, "GBK");
Format format = Format.getPrettyFormat();
format.setIndent(" ");
format.setEncoding("utf-8");
Keluaran XMLOutputter = XMLOutputter baru(format);
fo = FileOutputStream baru(jalur);
keluaran.output(doc, fo);
} tangkapan (Pengecualian e) {
System.err.println(e + "kesalahan");
} Akhirnya {
mencoba {
fi.close();
fo.close();
} tangkapan (Pengecualian e) {
e.printStackTrace();
}
}
}
/**
* Ubah informasi yang ditentukan file XML
*/
public static void EditXML (permintaan HttpServletRequest) memunculkan Pengecualian {
FileInputStream fi = nol;
FileOutputStream fo = null;
mencoba {
permintaan.setCharacterEncoding("GBK");
Jalur string = permintaan.getParameter("jalur");
int xmlid = Integer.parseInt(permintaan.getParameter("id"));
fi = FileInputStream baru(jalur);
SAXBuilder sb = SAXBuilder baru();
Dokumen doc = sb.build(fi);
Elemen root = doc.getRootElement(); // Dapatkan elemen root
Daftar buku = root.getChildren(); // Dapatkan koleksi semua elemen turunan dari elemen root
Elemen buku = (Elemen) books.get(xmlid);
String nama buku = permintaan.getParameter("nama buku");
String penulis = permintaan.getParameter("penulis");
String harga = permintaan.getParameter("harga");
String pub = permintaan.getParameter("pub");
String pubdate = permintaan.getParameter("pubdate");
// Teks teks baru;
Elemen newname = book.getChild("Judul Buku");
nama baru.setText(nama buku);//Ubah nama buku menjadi judul baru
Elemen newauthor = book.getChild("Penulis");
newauthor.setText(penulis);
Elemen newpub = book.getChild("Rumah Penerbitan");
newpub.setText(pub);
Elemen harga baru = book.getChild("harga");
harga baru.setText(harga);
Elemen newdate = book.getChild("Tanggal Publikasi");
tanggal baru.setText(tanggal terbit);
//books.set(xmlid,book);//Ubah sub-elemen
// Indentasi string = " ";
// boolean baris baru = benar;
// XMLOutputter outp = XMLOutputter baru(indent, newLines, "GBK");
Format format = Format.getPrettyFormat();
format.setIndent(" ");
format.setEncoding("utf-8");
Keluaran XMLOutputter = XMLOutputter baru(format);
fo = FileOutputStream baru(jalur);
keluaran.output(doc, fo);
} tangkapan (Pengecualian e) {
System.err.println(e + "kesalahan");
} Akhirnya {
mencoba {
fi.close();
fo.close();
} tangkapan (Pengecualian e) {
e.printStackTrace();
}
}
}
}
Berikut ini adalah file jsp untuk pengoperasiannya: test.jsp
<%@ halaman contentType="text/html;charset=GBK"%>
<%@ halaman bahasa="java" import="java.util.*,jdom.test.*"%>
<html>
<kepala>
<title>Membaca data file XML</title>
</kepala>
<tubuh>
<h3 align="center">File XML operasi JDOM</h3>
<p align="center">Baca semua data dalam file XML</p>
<tengah>
<tabel border="1" cellpadding="0" Cellspacing="1"
style="border-collapse: runtuh" width="80%" id="AutoNumber1">
<tr>
<td align="center" width="92">Judul buku</td>
<td align="center" width="92">Penulis</td>
<td align="center" width="92">Penerbit</td>
<td align="center" width="92">Harga</td>
<td align="center" width="92">Tanggal publikasi</td>
<td align="center" width="94">Operasi</td>
</tr>
</tabel>
<%
Jalur string = application.getRealPath("/JDOM/MyXml.xml");
XmlBean xml = XmlBean baru();
Vektor xmlall = xml.LoadXML(jalur);
untuk (int i = 0; i < xmlall.size(); i++) {
xml = (XmlBean) xmlall.elementAt(i);
/**out.println("Nama buku:"+xml.getbookname()+"<br>");
out.println("Penulis:"+xml.getauthor()+"<br>");
out.println("Rumah Penerbitan:"+xml.getpub()+"<br>");
out.println("Harga:"+xml.getprice()+"<br>");
out.println("Tanggal publikasi:"+xml.getpubdate()+"<br><br>");
*/
%>
<tabel border="1" cellpadding="0" Cellspacing="1"
style="border-collapse: runtuh" width="80%" id="AutoNumber2">
<tr>
<td align="center" width="92"><%=xml.getbookname()%></td>
<td align="center" width="92"><%=xml.getauthor()%></td>
<td align="center" width="92"><%=xml.getpub()%></td>
<td align="center" width="92"><%=xml.getprice()%></td>
<td align="center" width="92"><%=xml.getpubdate()%></td>
<td align="center" width="94"><a
href="xmlaction.jsp?act=del&id=<%=i%>&path=<%=path%>">Hapus</a></td>
</tr>
</tabel>
<%}%></pusat>
<formulir metode="POST" action="xmlaction.jsp">
<p align="center"><input type="radio" value="add" dicentang name="act">Tambahkan informasi
<input type="radio" value="edit" name="act">Edit nomor seri data:<select size="1"
nama="id">
<%untuk (int i = 0; i < xmlall.size(); i++) {%>
<option value="<%=i%>">Artikel <%=i + 1%></option>
<%}%>
</pilih><br>
Judul buku:<input type="text" name="bookname" size="20"><br>
Penulis:<input type="text" name="author" size="20"><br>
Penerbit:<input type="text" name="pub" size="20"><br>
Harga:<input type="text" name="price" size="20"><br>
Tanggal:<input type="text" name="pubdate" size="20"></p>
<input type="tersembunyi" nama="jalur" nilai="<%=jalur%>">
<p align="center"><input type="kirim" value="Kirim" name="B1"><input
type="reset" value="Reset" nama="B2"></p>
</bentuk>
</tubuh>
</html>
Berikut ini adalah file jsp yang menangani pengiriman file sebelumnya: xmlation.jsp
<%@ halaman contentType="text/html;charset=GBK"%>
<%@ halaman bahasa="java" import="jdom.test.*"%>
<%jika (permintaan.getParameter("tindakan") != null
&& permintaan.getParameter("bertindak").sama dengan("tambah")) {
XmlBean.AddXML(permintaan);
out.println("<p align='center'><br><br>Berhasil ditambahkan<br><br><a href='test.jsp'>Kembali</a>");
} else if (request.getParameter("act") != null
&& permintaan.getParameter("bertindak").sama dengan("del")) {
XmlBean.DelXML(permintaan);
out.println("<p align='center'><br><br>Berhasil dihapus<br><br><a href='test.jsp'>Kembalikan</a>");
} else if (request.getParameter("act") != null
&& permintaan.getParameter("tindakan").sama dengan("edit")) {
XmlBean.EditXML(permintaan);
out.println("<p align='center'><br><br>Modifikasi berhasil<br><br><a href='test.jsp'>Kembali</a>");
} kalau tidak {
out.print("<p align='center'><br><br>Operasi ilegal<br><br><a href='test.jsp'>Kembali</a>");
}
%>
/==Akhir teks=============== == ==========/
Komentar:
1. Bagian kuning pada teks nama Firaun pada file XmlBean.java merupakan modifikasi, dan bagian ungu merupakan cara penulisan program aslinya!
2. Pengodean default file MyXml.xml telah diubah menjadi pengkodean = "utf-8" karena selalu tidak normal saat mengurai GBK atau GB2312 di bawah weblogic 8. Tomcat baik-baik saja, dan mungkin xml default weblogic itu sendiri parser tidak mendukung GBK. Masalah ini belum terselesaikan. Jika ada pakar yang mengetahui solusinya, harap balas postingan ini dan beri tahu saya~~ Terima kasih semuanya!