KETTLE中的組件都試過了不能解析公司財務提供數據文件。按照網絡爬蟲思路利用htmlparser包解決了表格解析問題。
JAVASCRIPT腳本如下:
/***解析HTML信息表格***/
trans_Status = SKIP_TRANSFORMATION;
var Parser= org.htmlparser.Parser;
var TagNameFilter = org.htmlparser.filters.TagNameFilter;
var HasAttributeFilter = org.htmlparser.filters.HasAttributeFilter;
var AndFilter = org.htmlparser.filters.AndFilter;
var NodeList = org.htmlparser.util.NodeList;
//從上級獲取html數據流
var parser = new Parser(FileContent); //FileContent爲輸入參數
var index = getInputRowMeta().size();
var filterTable = new AndFilter(new TagNameFilter("table"),new HasAttributeFilter("id","excel_table"));
var filterTr = new TagNameFilter("tr");
var filterTd = new TagNameFilter("td");
//取得表格NodeList
var tables = parser.parse(filterTable);
for( j=0;j<tables.size();j++){
//取得行NodeList
var rows =tables.elementAt(j).getChildren();
rows.keepAllNodesThatMatch(filterTr);
for ( i = 0; i < rows.size(); i++) {
var cells =rows.elementAt(i).getChildren();
cells.keepAllNodesThatMatch(filterTd);
//輸出行處理
var row = createRowCopy(getOutputRowMeta().size());
row[0]="";//輸入行信息清空,不然每行都顯示原文內容
for (k=0;k<cells.size();k++){
row[index+k] = cells.elementAt(k).toPlainTextString();
}
//輸出行
putRow(row);
}
}