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

JasperReport 實戰(三):XPath 查詢 XML 數據源完全指南

     編輯:Java 相關知識

為什麼選 XML + XPath?

  • 結構清晰、可讀性強,適合「報表數據 = 文件」交付場景
  • 避免 SQL 耦合,面向對象思維:對象 → XML → 報表
  • XPath 標準化查詢語法,學習成本低

XPath 基礎語法速查

類型語法示例說明
絕對路徑/root/child/NameList/Person從文檔根節點開始
相對路徑childName相對當前上下文節點
條件過濾[predicate]/Person[Age<30]方括號內寫條件
位置索引[position()]/Person[1] 或 [position()=1]1-based 索引
屬性選取@attr/Person[@id='100']@ 符號選取屬性
函數count(), position()count(/Person)統計節點數、位置判斷
邏輯運算and, or, =, <[Gender='男' and Age>20]支援基本邏輯

實戰數據源 (NameList.xml)

<NameList>
    <Person><Name>強尼</Name><Gender>男</Gender><Age>56</Age></Person>
    <Person><Name>阿美</Name><Gender>女</Gender><Age>23</Age></Person>
    <Person><Name>李麗</Name><Gender>女</Gender><Age>58</Age></Person>
    <Person><Name>傑森</Name><Gender>男</Gender><Age>32</Age></Person>
    <Person><Name>劉三</Name><Gender>男</Gender><Age>21</Age></Person>
</NameList>

常用 XPath 查詢示例

// 1. 選取所有 Person 節點 (作為報表主查詢)
/NameList/Person

// 2. 相對路徑:在 Person 上下文中選取 Name
Name

// 3. 絕對路徑選取所有 Name
/NameList/Person/Name

// 4. 條件查詢:年齡 < 50 的 Person
/NameList/Person[Age < 50]

// 5. 條件查詢:性別為女的 Person
/NameList/Person[Gender = '女']

// 6. 第一條記錄
/NameList/Person[1]

// 7. 前兩條記錄
/NameList/Person[position() <= 2]

// 8. 統計 Person 總數
count(/NameList/Person)

iReport/Jaspersoft Studio 配置步驟

  1. 建立 XML Data Source:Data → Connections / Data Sources → New → XML Data Source
  2. 指向 XML 文件,勾選 Use the report XPath expression when filling the report
  3. 報表查詢對話框 (Data → Report Query) 設置 XPath 查詢語句 (如 /NameList/Person)
  4. 子報表連接表達式:((JRXmlDataSource)$P{REPORT_DATA_SOURCE}).dataSource("相對XPath")
  5. 字段映射:右鍵節點 → Add node as field,自動生成 $F{fieldName}

字段映射界面

Java 代碼填充報表

public void fillReport() throws JRException {
    // 1. 數據源
    JRXmlDataSource dataSource = new JRXmlDataSource(new File("NameList.xml"));
    // 2. 參數
    Map params = new HashMap<>();
    // 3. 填充
    JasperPrint print = JasperFillManager.fillReport("Report.jasper", params, dataSource);
    // 4. 導出
    JasperExportManager.exportReportToPdfFile(print, "output.pdf");
}

總結

XPath 是 JasperReport 處理 XML 數據源的核心查詢語言。掌握絕對/相對路徑、條件謂詞、position()、count()等常用語法,配合 iReport 可視化字段映射,即可高效完成「XML → 報表」轉換。關鍵技巧:REPORT_COUNT 變量配合動態 XPath 實現子報表數據源精準定位。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved