首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

[JAVA100例] 第70例:使用 JDOM 解析 XML 文件

     編輯:Java 相關知識

本例演示使用 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();
  }
}

待解析 XML 示例 (book.xml)

<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

關鍵解析流程

  1. SAXBuilder:基於 SAX 事件流構建 DOM 樹,false 禁用 DTD 驗證提升性能
  2. build(File):解析文件生成 Document 對象
  3. getRootElement():獲取根元素
  4. getChildren(name):獲取直接子元素列表(非遞歸)
  5. getAttributeValue(name):直接獲取屬性字符串值
  6. getText():獲取元素內的文本內容(含子元素文本)

異常處理注意

  • JDOMException:解析錯誤(格式不合法、編碼問題等)
  • IOException:文件讀取錯誤
  • 建議分別捕獲並提供具體錯誤提示

現代 JDOM 2.x 遷移提示

  • 包名變更:org.jdom → org.jdom2
  • SAXBuilder 默認不驗證,構造器簡化
  • 集合返回類型改為泛型 List<Element>,無需強轉
  • 新增 getChild(name) 直接獲取第一個子元素
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved