反饋已提交
網絡繁忙
XML 資料集,就是指資料源是一系列的 XML 檔案。我們可以將這些檔案作為資料來源,用 FineReport 來呈現這些資料,並做相應的資料分析。
在%FR_HOME%webrootWEB-INF eportlets目錄下建立 frtest.xml,其內容如下,下面我們來看下正文資料集的製作步驟:
<?xml version="1.0" encoding="UTF-8"?><frtest> <Customers> <Name>ALFKI</Name><type>ALfreds Futterkiste</type><value>90</value></Customers> <Customers> <Name>ANATR</Name><type>Ana Trujillo Emparedados y helados</type><value>90</value></Customers></frtest>
注:如果要使用已存在的 XML 檔案作為資料集,需把相應的檔案copy到%FR_HOME%webappswebrootWEB-INF eportlets 目錄下。
下面我們來為大家介紹下如何定義檔案資料集。
點選資料集下面的「加號」,選擇「檔案資料集」,如下圖:
彈出檔案資料集對話框後,正文類型選擇「XML」。點選本地檔案後面的選擇按鈕,選擇已經存在的 frtest.xml 檔案,右側的關鍵節點面板即會自動重新整理獲取 XML 中的所有節點資訊,並將節點以樹狀結構的形式顯示出來,如下圖所示:
注:若一節點,有多個同名同級子節點,但各個子節點的葉子節點不同(儲存資料的節點標籤),取葉子節點的並集,如下圖所示:
另:如果 XML 資料集中有 2 個根節點,那麼 FineReport 會自動在頂部新增一個沒有名稱的空根節點。
<?xml version="1.0" encoding="UTF-8"?><bookstore> <book> <author>J K.Rowing</author><title>HMWHERE</title><author>J K.Rowing</author><author>J K.Rowing</author></book> <book> <author>J K.Rowing</author><author>J K.Rowing</author><author>J K.Rowing</author><price>19</price></book></bookstore>
FineReport 的 XML 檔案資料集支援將檔案中的所有節點以樹狀結構顯示出來,但是不能像儲存程式一樣傳回多個結果集,將每個節點的資料均顯示在一個資料集中,一次只能傳回一個子節點中的所有資料,想要顯示哪個子節點的資訊就選中該子節點即可,最後資料來源於選中節點的子節點、子節點的子節點直至葉子節點。
<?xml version="1.0" encoding="GBK"?><PickBillPrintEntity> <modifyTime>2013-08-11</modifyTime><exprossCode>STO</exprossCode><expressName>申通E物流</expressName> <pickDetail> <PrintPickDetailEntity> <address>陳村鎮白陳路錦龍工業儲存格</address><city>佛山市</city><contactName>曹淑儀</contactName><deliveryOrderNo>668267627204339729</deliveryOrderNo><district>順德區</district><prov>廣東省</prov><qty>1.0</qty> </PrintPickDetailEntity> <PrintPickDetailEntity> <address>陳村鎮白陳路錦龍工業儲存格</address><city>佛山市</city><contactName>曹淑儀</contactName><deliveryOrderNo>668267627204339729</deliveryOrderNo><district>順德區</district><prov>廣東省</prov><qty>2.0</qty> </PrintPickDetailEntity> </pickDetail><packDetail> <PrintPackEntity> <baocai>SJZX*1</baocai><itemCode>694852470667309</itemCode><goodDese>電話</goodDese><marksNumber>220cm*240cm</marksNumber><qty>1.0</qty><orderCount>1.0</orderCount><skuCount>1.0</skuCount> </PrintPackEntity> <PrintPackEntity> <baocai>SJZX*1</baocai><itemCode>694852471667309</itemCode><goodDese>時光印記</goodDese><marksNumber>220cm*240cm</marksNumber><qty>1.0</qty><orderCount>1.0</orderCount><skuCount>1.0</skuCount> </PrintPackEntity> <PrintPackEntity> <baocai>SJZX*1</baocai><itemCode>694852472667309</itemCode><goodDese>維多利亞</goodDese><marksNumber>200cm*230cm</marksNumber><qty>2.0</qty><orderCount>1.0</orderCount><skuCount>2.0</skuCount> </PrintPackEntity> <other> <otherNo>1</otherNo> </other> </packDetail></PickBillPrintEntity>
注:如果編碼類型選擇 UTF-8,預覽的時候中文字元可能會出現亂碼,這時你需將編碼類型換成 GBK 或其他類型即可。
其傳回資料集中的資料遵循以下五個規則:
選中節點只有葉子節點,則葉子節點的並集為資料集欄位;
選中節點只有一個非葉子節點的子節點,則此子節點的葉子節點為資料集欄位,如選中 PickDetail,效果與選中 PrintPickDetailEntity 一致;
選中節點有多個子節點(非葉子節點),此時按第一個子節點來計算。如選中 pactDetail,有多個子節點(PrintPackEntity 和 Other),此時按照第一個子節點“PrintPackEntity”來計算;
選中節點既有葉子節點,又有普通子節點(非葉子節點),此情況為一對多,(其中葉子節點為“一”,普通子節點的葉子節點為“多),則資料集欄位為所有葉子節點加第一個普通子節點的葉子節點,資料內容:其中“一”跟隨“多”來擴展,如選中根節點 PickBillPrintEntity,他有三個葉子節點和兩個子節點(pickDetail和 PacDetail,選第一個),資料如下圖,顯示其三個葉子節點和第一個子節點中的資料:
若同一葉子節點有多個值,用“;”隔開,如下圖,author 這個欄位的值為:James McGovern;Per Bothner;Kurt Cagle;James Linn;Vaidyanathan Nagaraian。
注:必須選中一個節點,否則點選確定後預覽為空。
範例中只有一個子節點 Customers,我們這裏選中父節點 frtest,子節點 Customers 或者葉子節點的任何一個,其返注回的結果都一樣,那麼就選中 Customers 子節點,點選預覽按鈕,如下圖:
設定完後,可以看到範本資料集中會增加一個名為 'File1' 的資料集,如下圖:
其製作步驟與 Excel 資料集相同。
遠端 XML 資料集有兩種:
透過 JSP 呼叫,其實現思路與 Excel 資料集相同,詳細請參考 遠端 Excel 資料集。
直接透過 URL 呼叫 XML 檔案。
下文介紹直接透過 URL 呼叫 XML 檔案。
直接呼叫 XML 檔案,可以透過在 URL 中輸入:http://ip:埠/應用名稱/xml檔案來呼叫。
注:請使用英文為 XML 檔案命名,否則會連結失敗。
假設 Tomcat 環境下的 WebReport 工程目錄下存在上面範例中用的 frtest.xml,下面可以在 URL 中輸入:http://localhost:8075/WebReport/frtest.xml,如下圖所示:
點選關鍵節點面板的重新整理按鈕,讀取 XML 檔案中而的資料,然後選中需要使用的節點,選擇規律與本地 XML 檔案一致。
不支援 Unicode 十進制編碼值為 183、215、247 的字元,會導致 XML 檔案資料集無法載入,查詢 Unicode 碼錶,發現對應的三個字元為:· × ÷
解決方法:刪掉 XML 裏面的這三個字元即可,或者使用 <![CDATA[xxx]]> 包裹起來
滑鼠選中內容,快速回饋問題
滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。
不再提示
10s後關閉
反馈已提交
网络繁忙