Di bawah ini adalah tes membaca XML yang saya tulis sendiri
Copy kode kodenya sebagai berikut:
impor java.util.Iterator;
impor java.io.BufferedReader;
impor java.io.File;
impor java.io.IOException;
impor java.io.InputStreamReader;
impor java.net.MalformedURLException;
import org.dom4j.*;
impor org.dom4j.io.SAXReader;
kelas publik XmlBaca {
StringBuilder statis sBuilder = StringBuilder baru();
public static void main(String[] args) melempar IOException {
BufferedReader bReader = BufferedReader baru(InputStreamReader baru(
Sistem.di));
Jalur string = null;
System.out.println("Silakan masukkan jalur absolut dan nama file dari file XML:/n");
jalur = bReader.readLine();
sBuilder.append("Mulai mengeluarkan konten file XML/n");
Dokumen dokumen = null;
mencoba {
dokumen = baca(jalur);
sBuilder.append(jalur + "/n");
} tangkapan (MalformedURLException e) {
e.printStackTrace();
} tangkapan (DocumentException e) {
e.printStackTrace();
}
Elemen root = getRootElement(dokumen);
jika (akar == nol) {
System.out.print("Node root tidak diperoleh");
kembali;
}
// Dapatkan format pengkodean dokumen XML
String encString = dokumen.getXMLEncoding();
sBuilder.append("<?xml version=/"1.0/" coding=/"" + encString
+ "/">/n");
sBuilder.append(elementText(root, attText(root), 0));
System.out.println(getIterator(root, 0) + "</" + root.getName() + ">");
}
/**
* Node rekursif
*
* @keterangan
* elemen @param
* @param lvl
* Tingkat
* @kembali
*/
private static String getIterator(Elemen elemen, int lvl) {
tingkat += 1;
untuk (Iterator i = elemen.elementIterator(); i.hasNext();) {
Elemen e = (Elemen) i.next();
sBuilder.append(elementText(e, attText(e), lvl));
getIterator(e, lvl);
int hitungan = e.nodeCount();
jika (hitung > 0) {
untuk (int j = 0; j < lvl; j++) {
sBuilder.append(" ");
}
}
sBuilder.append("</" + e.getName() + ">/n");
}
kembalikan sBuilder.toString();
}
/**
* Dapatkan nilai string dari atribut node saat ini
*
* @keterangan
* elemen @param
* Node saat ini
* @kembali
*/
private static String attText(Elemen elemen) {
Tali str = " ";
untuk (int i = 0; i < elemen.attributeCount(); i++) {
Atribut atribut = elemen.atribut(i);
str += atribut.getName() + "=/"" + atribut.getValue() + "/" ";
}
kembalikan str;
}
/**
* Dapatkan nilai teks dari Elemen saat ini
*
* @keterangan
* elemen @param
* Node Elemen saat ini
* @param teks
* nilai atribut
* @param lvl
* Tingkat
* @kembali
*/
elemen String statis pribadiTeks(Elemen elemen, Teks string, int lvl) {
String str = "";
untuk (int i = 0; i < lvl; i++) {
str+= " ";
}
str += "<" + elemen.getName();
if (teks != null && teks != "") {
str += teks;
}
//Karena tidak ada atribut atau metode hasChild di dom4j, metode nodeCount() harus digunakan untuk menentukan kapan ada node anak.
int hitungan = elemen.nodeCount();
jika (hitung == 0) {
kembalikan str+= ">";
}
kembalikan str += ">/n";
}
/**
*
* @deskripsi Baca file XML
* @file param
* Jalur file XML, termasuk nama file
* @kembalikan dokumen Dokumen
* @melempar MalformedURLException
* @melempar DocumentException
*/
Pembacaan dokumen statis publik (file string) memunculkan MalformedURLException,
Pengecualian Dokumen {
Pembaca SAXReader = SAXReader baru();
Dokumen dokumen = reader.read(File baru(file));
dokumen pengembalian;
}
/**
* Dapatkan simpul akar dari dokumen Dokumen
*
* @param dokumen
* @kembali
*/
Elemen statis publik getRootElement(Dokumen dokumen) {
kembalikan dokumen.getRootElement();
}
}