反饋已提交

網絡繁忙

解析資料庫內xml檔案

1. 概述

1.1 應用場景

如果資料庫表中某個欄位所存的資料為 XML 格式。如下圖所示:


那麼如何將存於 XML 欄位中的值讀取出來作為報表資料源使用呢。如下圖所示:


1.2 實現原理

通程式式連結目標資料庫後,執行 SQL 查詢語句,將表資料全部查詢出來,透過一個資料提取 GetXmlDate類,將 XML 資料解析出來,將解析後的資料存成多個資料列,然後在設計器中建立程式資料集使用。

2. 範例

範例將實現 1.1 中的效果,將資料庫表內 XML 格式的資料提取出來使用,資料存在 MySql 資料庫的 xmltest 表中。表中每條 XML 記錄資料如下:

注:完成此範例前,需在資料庫準備一個含有 XML 類型資料的資料表,如 1.1 節中所示。

<Field><Name>MemoryFreeSize</Name><Type>int</Type><Value>1962</Value></Field> <Field><Name>MemoryTotalSize</Name><Type>int</Type><Value>2047</Value></Field> <Field><Name>MemoryUsage</Name><Type>int</Type><Value>4</Value></Field>
<Field><Name>MemoryFreeSize</Name><Type>Int</Type><Value>1999</Value></Field> <Field><Name>MemoryTotalSize</Name><Type>Int</Type><Value>2048</Value></Field> <Field><Name>MemoryUsage</Name><Type>Int</Type><Value>10</Value></Field>
<Field><Name>MemoryFreeSize</Name><Type>Int</Type><Value>2000</Value></Field> <Field><Name>MemoryTotalSize</Name><Type>Int</Type><Value>2050</Value></Field> <Field><Name>MemoryUsage</Name><Type>Int</Type><Value>15</Value></Field>

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 定義程式資料源

連結目標資料庫後,執行sql查詢語句,將 xmltest 表資料全部查詢出來,對於 ID、NAME 欄位的值我們將其直接存於新的結果集 ArrayList 中,對於 XML 欄位我們透過GetXmlDate類對其進行解析後再滾入 ArrayList 中。

2.2.1 編寫Java檔案

1)在編輯器中編寫 Java 檔案 GetXmlDate.java,實現對於XML 欄位進行解析的功能。完整程式碼可參見:

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

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

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

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

2.2.2 編譯Java檔案

Java 檔案編寫完成後,在編譯器中首先編譯 GetXmlDate.java 然後再編譯 XMLRead.java。編譯透過後,將會在編譯器對應工程檔案儲存路徑下生成 class 檔案。如下圖所示:

將其放於WEB-INF/classes/com/fr/data下。

2.2.3 匯入class檔案

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

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

2.3 建立程式資料集

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

2.4 使用程式資料源

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

以上資料庫表欄位為 XML 類型的資料就實現了轉換為報表資料源使用。


附件列表


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

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

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

不再提示

10s後關閉

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

反馈已提交

网络繁忙