kettle 里用js 調用java類


1. 需要事先將jar包 放在kettle 的 libext 目錄,kettle 在啟動時會自動加載libext 目錄下的所有 jar 包。

2. modified java script 步驟要選中 compatibility mode,並將 content 設置為輸出的字段。

 

代碼如下:

var 變量 = new Packages.包名(參數 );


kettle modified javascript 步驟的一個例子
例子里用到的 org.htmlparser.Parser 是一個html 的解析器,可以在 sourceforge 上下載。
這個例子使用 org.htmlparser.Parser 包來解析一個 html 格式的字符串,要解析的 html 字符串保存在conntentOld 字段里。
解析過程去除了 html 格式里所有標簽,並將結果保存在 content 字段里。
注意事項:
1. 需要事先將htmlparser.jar包 放在kettle 的 libext 目錄,kettle 在啟動時會自動加載libext 目錄下的所有 jar 包。
2. modified java script 步驟要選中 compatibility mode,並將 content 設置為輸出的字段。
代碼如下:
[@more@]var parser = new Packages.org.htmlparser.Parser( contentOld );
var visitor = new Packages.org.htmlparser.visitors.TextExtractingVisitor();
parser.visitAllNodesWith(visitor);
var content = visitor.getExtractedText();

 

kettle 的實用小功能 中介紹了如何批量讀取二進制文件的內容,這里說一下批量讀取文本文件的方法。
第一步也是使用 Get File Names 步驟,根據正則表達式來獲取一個路徑下所有指定的文件名。
第二步驟使用 modified javascript 腳本步驟,來讀取這些指定的文本文件,腳本如下。
[@more@]
//code begin
file = new Packages.java.io.File(filename.getString());
fileInputStream = new Packages.java.io.FileInputStream(file);
reader = new Packages.java.io.InputStreamReader(fileInputStream);
var cbuf = Packages.com.xgn.ketl.trans.step.infoextractor.InfoExtractor.createCharArray(1024);
var content= new String("");
length = reader.read(cbuf,0,1024);
while (length >0)
{
content += new Packages.java.lang.String(cbuf)
length = reader.read(cbuf,0,1024);
}
////code end
腳本比較簡單就是讀取文本文件內容,把文件內容放在content 字段里。其中大家有有點費解的可能是下面這句:
var cbuf = Packages.com.xgn.ketl.trans.step.infoextractor.InfoExtractor.createCharArray(1024);
這里使用了一個類的靜態方法,這個靜態方法的定義如下:
public static char[] createCharArray(int length)
{
return new char[length];
}
實際就是返回一個char數組,因為我不知道如何在 sciprt 里定義一個 char 數組,就用這個方法繞過去了,有知道的朋友請告訴我。
另外要注意,modified javascript 步驟里要選中 “compatbility mode”,content 作為新增加的輸出字段。
經過上述兩步,文件名和文件內容就都保存在數據行里了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM