Kettle 使用備忘錄 生成xml檔案

2021-06-21 20:28:58 字數 2258 閱讀 5736

1. 利用 excel中的資料生成xml檔案

kettle中的xml檔案輸出元件的功能其實是很弱的,所以要生成較為複雜的xml檔案時需要使用元件:

add xml , 

xml join, 

placeholder, js script 等等

使用merge join主要是為了減少在xml join中需要匹配的結果集合(因為xml join中的匹配功能其實是很弱的)。

在merge join之前記錄必須先排序。

placeholder 元件是往記錄流中新增乙個常量,這個常量在 add xml中通常不被設為屬性,而是在xml join中用於放置需要被組裝進去的xml元素。

以生成如下簡單的xml檔案為例:

<?xml version="1.0" encoding="utf-8"?>

hello from section foo

hello from section bar

對應的kettle 轉換為:

首先需要從excel檔案中讀取資料,excel檔案中的內容為

利用讀取到的內容生成xml元素,如下是add xml中的設定:

這一步主要生成了如下的xml元素:

hello from section foo

hello from section bar

接下來要生成 元素,因為該元素沒有對應的資料,

所以使用「生成記錄」元件生成一條空記錄用於與之前的xml元素進行xml join。它的功能有點類似

與之前提到的placeholder

,不同的是這個可以作為起始輸入,而placeholder是乙個轉換步驟。

接著就是進行xml join了,source stream

中的xml元素會被拼接到target stream的xml元素中。怎麼拼接有join condition properties決定,它是使用xpath來定位要拼接的位置,例如//doc 就是把source stream的元素拼接到每個doc元素中。需要注意的是,由於這次xml join之後xml檔案就生成好了,所以不能把omit xml header選上。

當然通過xpath也可以做複雜的條件join,如下是個例子:

可以通過xpath指定在所有target stream的area元素中如果area的屬性stationid的值與source stream中stationid的值(這個值不一定要在source的xml元素中,但必須在source stream中,例如可以是一開始從excel讀入的流中)相同,那麼把source stream中的xml元素放到 orderlinecomments元素中。

這步之後生成的xml檔案如下:

<?xml version="1.0" encoding="utf-8"?>

hello from section foo

hello from section bar

和我們預期的多了和,這是我們使用js指令碼進行替換:

js指令碼處理好之後,輸出流的名字就換成 xmloderlinesnew了。

最後把這個流輸出到檔案中,需要注意的是在內容中不要使用「分割符」,「封閉符」,和「頭部」:

AS使用備忘錄

1 使用as打包apk時如何忽略翻譯問題 在build.gradle中做如下配置即可忽略檢測 lintoptions 2 使用as檢視sha1 在as控制台terminal 輸入如下指令即可 keytool v list keystore c users administrator desktop ...

SGAPI使用備忘錄

首先 sgapi必須要修改修改才會好用,才能隨心所欲地用。修改的地方 第一 必須明白這一點 當我們在web頁面頭部寫上時,在web程式執行時,該頁面呼叫的是客戶端本地的view安裝資料夾裡面的sgapi js庫,為了使用自己修改過的sgapi庫,必須將此段 改寫成引用伺服器端的sgapi庫 就是自己...

Softice使用備忘錄

softice預定義功能組合鍵的作用 f1 幫助 f2 暫存器顯示 關閉切換 f3 源程式 反彙編 切換 程式有源程式時可用 f4 softice介面 螢幕原始畫面顯示切換 f5 退出softice視窗 f6 進入 退出 視窗 f7 程式執行到游標所在處 f8 單步跟蹤 f9 在游標所在位置設斷點 ...