本例演示使用 JDOM 的 SAXBuilder 解析 XML 文件,遍歷元素節點並提取屬性與文本內容。
import org.jdom.*;
import org.jdom.input.*;
import org.jdom.output.*;
import java.io.*;
import java.util.List;
public class JDOMParsePage {
public JDOMParsePage() {
Document docJDOM;
SAXBuilder bSAX = new SAXBuilder(false); // false = 不驗證 DTD
try {
docJDOM = bSAX.build(new File("book.xml")); // 從文件構建 Document
} catch (JDOMException e) { e.printStackTrace(); return; }
Element root = docJDOM.getRootElement();
System.out.println("根節點標記名:" + root.getName());
System.out.println("*****下面遍歷XML元素*****");
List list = root.getChildren("page");
for (int i = 0; i < list.size(); i++) {
Element element = (Element) list.get(i);
String id = element.getAttributeValue("id"); // 獲取屬性值
List titleList = element.getChildren("title");
Element titleElement = (Element) titleList.get(0);
String title = titleElement.getText(); // 獲取文本內容
List fileList = element.getChildren("file");
Element fileElement = (Element) fileList.get(0);
String file = fileElement.getText();
System.out.println("ID:" + id + " " + "標題:" + title + " " + "文件:" + file);
}
}
public static void main(String[] args) {
new JDOMParsePage();
}
}
<book>
<page id="1">
<title>第一章 入門</title>
<file>chapter1.html</file>
</page>
<page id="2">
<title>第二章 進階</title>
<file>chapter2.html</file>
</page>
</book>
根節點標記名:book *****下面遍歷XML元素***** ID:1 標題:第一章 入門 文件:chapter1.html ID:2 標題:第二章 進階 文件:chapter2.html
false 禁用 DTD 驗證提升性能build(File):解析文件生成 Document 對象getRootElement():獲取根元素getChildren(name):獲取直接子元素列表(非遞歸)getAttributeValue(name):直接獲取屬性字符串值getText():獲取元素內的文本內容(含子元素文本)JDOMException:解析錯誤(格式不合法、編碼問題等)IOException:文件讀取錯誤org.jdom → org.jdom2SAXBuilder 默認不驗證,構造器簡化List<Element>,無需強轉getChild(name) 直接獲取第一個子元素