ด้านล่างนี้คือแบบทดสอบการอ่าน XML ที่ฉันเขียนเอง
คัดลอกรหัสรหัส ดังต่อไปนี้:
นำเข้า java.util.Iterator;
นำเข้า java.io.BufferedReader;
นำเข้า java.io.File;
นำเข้า java.io.IOException;
นำเข้า java.io.InputStreamReader;
นำเข้า java.net.MalformedURLException;
นำเข้า org.dom4j.*;
นำเข้า org.dom4j.io.SAXReader;
XmlRead คลาสสาธารณะ {
StringBuilder แบบคงที่ sBuilder = StringBuilder ใหม่ ();
โมฆะคงที่สาธารณะ main (String [] args) พ่น IOException {
BufferedReader bReader = BufferedReader ใหม่ (InputStreamReader ใหม่ (
System.in));
เส้นทางสตริง = null;
System.out.println("กรุณาระบุพาธสัมบูรณ์และชื่อไฟล์ของไฟล์ XML:/n");
เส้นทาง = bReader.readLine();
sBuilder.append("เริ่มส่งออกเนื้อหาไฟล์ XML/n");
เอกสารเอกสาร = null;
พยายาม {
เอกสาร = อ่าน (เส้นทาง);
sBuilder.append(เส้นทาง + "/n");
} จับ (MalformedURLException e) {
e.printStackTrace();
} จับ (DocumentException e) {
e.printStackTrace();
-
องค์ประกอบ root = getRootElement (เอกสาร);
ถ้า (root == null) {
System.out.print("ไม่ได้รับโหนดรูท");
กลับ;
-
// รับรูปแบบการเข้ารหัสของเอกสาร XML
สตริง encString = document.getXMLEncoding();
sBuilder.append("<?xml version=/"1.0/" encoding=/"" + encString
+ "/">/n");
sBuilder.append(elementText(root, attText(root), 0));
System.out.println(getIterator(root, 0) + "</" + root.getName() + ">");
-
-
* โหนดแบบเรียกซ้ำ
-
* @คำอธิบาย
* องค์ประกอบ @param
* @param lvl
* ระดับ
* @กลับ
-
getIterator สตริงคงที่ส่วนตัว (องค์ประกอบองค์ประกอบ int lvl) {
เลเวล += 1;
สำหรับ (ตัววนซ้ำ i = element.elementIterator(); i.hasNext();) {
องค์ประกอบ e = (องค์ประกอบ) i.next();
sBuilder.append(elementText(e, attText(e), เลเวล));
getIterator (e, เลเวล);
จำนวน int = e.nodeCount();
ถ้า (นับ > 0) {
สำหรับ (int j = 0; j <ระดับ; j ++) {
sBuilder.ผนวก(" ");
-
-
sBuilder.append("</" + e.getName() + ">/n");
-
กลับ sBuilder.toString();
-
-
* รับค่าสตริงของแอตทริบิวต์ของโหนดปัจจุบัน
-
* @คำอธิบาย
* องค์ประกอบ @param
* โหนดปัจจุบัน
* @กลับ
-
attText สตริงคงที่ส่วนตัว (องค์ประกอบองค์ประกอบ) {
สตริง str = " ";
สำหรับ (int i = 0; i < element.attributeCount(); i++) {
คุณลักษณะแอตทริบิวต์ = element.attribute(i);
str += คุณลักษณะ getName() + "=/"" + คุณลักษณะ getValue() + "/" ";
-
กลับ STR;
-
-
* รับค่าข้อความขององค์ประกอบปัจจุบัน
-
* @คำอธิบาย
* องค์ประกอบ @param
* โหนดองค์ประกอบปัจจุบัน
* ข้อความ @param
* ค่าแอตทริบิวต์
* @param lvl
* ระดับ
* @กลับ
-
องค์ประกอบสตริงคงที่ส่วนตัวข้อความ (องค์ประกอบองค์ประกอบ, ข้อความสตริง, int lvl) {
สตริง str = "";
สำหรับ (int i = 0; i < lvl; i++) {
STR += " ";
-
str += "<" + element.getName();
ถ้า (ข้อความ != null && ข้อความ != "") {
STR += ข้อความ;
-
//เนื่องจากไม่มีแอตทริบิวต์หรือเมธอด hasChild ใน dom4j จึงต้องใช้เมธอด nodeCount() เพื่อกำหนดเมื่อมีโหนดย่อย
จำนวน int = element.nodeCount();
ถ้า (นับ == 0) {
กลับ STR += ">";
-
กลับ STR += ">/n";
-
-
-
* @description อ่านไฟล์ XML
* ไฟล์ @param
* เส้นทางไฟล์ XML รวมถึงชื่อไฟล์
* @return เอกสารเอกสาร
* @throws MalformedURLException
* @ พ่น DocumentException
-
การอ่านเอกสารสาธารณะแบบคงที่ (ไฟล์สตริง) พ่น MalformedURLException
เอกสารข้อยกเว้น {
เครื่องอ่าน SAXReader = SAXReader ใหม่ ();
เอกสารเอกสาร = reader.read (ไฟล์ใหม่ (ไฟล์));
เอกสารการส่งคืน;
-
-
* รับโหนดรูทของเอกสารเอกสาร
-
* เอกสาร @param
* @กลับ
-
องค์ประกอบคงที่สาธารณะ getRootElement (เอกสารเอกสาร) {
กลับ document.getRootElement();
-
-