反饋已提交

網絡繁忙

解析某個目錄下 XML 檔案

1. 概述

1.1 應用場景

電腦某個目錄下儲存了幾個 XML 檔案,希望把 XML 檔案轉換為報表資料源。如下圖所示,將 Northwind.xml 中的資料轉換為報表資料源。


Northwind.xml 檔案內容如下:

<?xml version="1.0" encoding="UTF-8"?>
<Northwind>
    <Customers>
    <CustomerID>ALFKI</CustomerID>
<CompanyName>ALfreds Futterkiste</CompanyName>
<ContactName>Maria Anders</ContactName>
<ContactTitle>Sales Representative</ContactTitle>
<Address>Obere Str.57</Address>
<City>Berlin</City>
<PostalCode>12209</PostalCode>
<Country>Germany</Country>
<Phone>030-0074321</Phone>
<Fax>030-0076545</Fax>
</Customers>
</Northwind>

通程式式資料集轉換成報表資料源:

當目錄下有多個檔案時,就可以定義參數,最終實現根據不同的檔案名稱動態獲取不同的 XML 中的內容作為報表資料源。如下圖所示:

1.2 實現原理

FineReport 中可以透過自訂程式資料集來對 XML 欄位資料進行解析,再透過參數的方式,動態獲取 XML 檔案名稱,最終作為報表資料源。

2. 範例

範例將實現 1.1 中的效果,定義程式資料集,透過檔案名稱,獲取特定目錄下的 XML 格式資料,最終解析成適合製作報表的行式資料。

2.1 準備編譯環境

編譯程式前,需先建立一個 Java 工程環境,並且需要一個 Java 編輯器,如 Eclipse 或 idea 。

在編輯器工程中匯入 FineReport 工程 JAR 包。包括安裝的報表工程

%FR_HOME%/lib下的所有的包,

%FR_HOME%/server/lib 下的所有包,

%FR_HOME%/webapps/webroot/WEB-INF/lib下的所有包,

還要引入 JDK 下的的 tools.jar。詳細操作可參考:編譯Java程式 

2.2 定義程式資料源

2.2.1 編寫Java檔案

1)在編輯器中編寫 Java 檔案,首先定義參數 name 及 type ,供其他類直接呼叫,安全性比較高。完整程式碼可參見:

https://code.fanruan.com/demo/example/src/branch/release/10.0/src/main/java/com/fr/data/XMLColumnNameType4Demo.java

2)在編輯器中定義定義 XMLParseDemoDataModel.java 類繼承 AbstractDataModel API,實現 getColumnCount、getColumnName、getRowCount、getValueAt 四個方法。完整程式碼可參見:

注:程式碼中的資料庫連結資訊和資料表資訊需要改成使用者自己存放 xmltest 表的資訊。

https://code.fanruan.com/demo/example/src/branch/release/10.0/src/main/java/com/fr/data/XMLParseDemoDataModel.java

3)定義程式資料集 XMLDemoTableData,其中定義一個參數 $filename,動態獲取某個路徑下的 XML 檔案內容,並將其解析成資料列,資料列名稱和 XML 內欄位名稱是一一對應。完整程式碼可參見:

注1:如果 XML 檔案的格式與問題描述處所展示的 XML 格式不一致,則需要修改類中的 deep 變數,把列名所在的節點層數改成相對應的數值。

注2:注意程式碼中XML檔案存放的位置要修改為使用者自己的檔案路徑。

https://code.fanruan.com/demo/example/src/branch/release/10.0/src/main/java/com/fr/data/XMLDemoTableData.java

2.2.2 編譯Java檔案

Java 檔案編寫完成後,在編譯器中依次編譯。編譯透過後,將會在編譯器對應工程檔案儲存路徑下生成 class 檔案。如下圖所示:

2.2.3 匯入class檔案

將以上編譯後生成的所有類檔案複製到 %FR_HOME%\webapps\webroot\WEB-INF\classes\com\fr\data工程目錄下。如下圖所示:

注:遠端設計時,本地設計器和遠端伺服器的工程下都需要放置程式資料集對應的 class 檔案。

2.3 建立程式資料集

1)建立普通報表,資料集管理面板建立程式資料集,選擇我們定義好的程式資料集 XMLDemoTableData.class檔案。如下圖所示:


2)選擇 class 後新增一個預設參數 filename,值為 Northwind,如下圖所示:


在範本資料集視窗,點選預覽按鈕,彈出參數對話框,輸入要顯示的 XML 檔案名稱,點選確定則可以把 Northwind.xml 檔案裏面的資料讀取出來轉換報表資料源了,如下圖:

2.4 使用程式資料集

配置好程式資料源後便可以使用自訂的程式資料集,與其他類型的資料集使用方法相同,可以透過拖曳方法實現儲存格資料列綁定。如下圖所示:


附件列表


主題: 二次開發
  • 有幫助
  • 沒幫助
  • 只是瀏覽
  • 圖片不清晰
  • 用語看不懂
  • 功能說明看不懂
  • 操作說明太簡單
  • 內容有錯誤
中文(繁體)

滑鼠選中內容,快速回饋問題

滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。

不再提示

10s後關閉

獲取幫助
線上支援
獲取專業技術支援,快速幫助您解決問題
工作日9:00-12:00,13:30-17:30在线
頁面反饋
針對當前網頁的建議、問題反饋
售前咨詢
業務咨詢
電話:0933-790886或 0989-092892
郵箱:taiwan@fanruan.com
頁面反饋
*問題分類
不能為空
問題描述
0/1000
不能為空

反馈已提交

网络繁忙