2014-05-13 53 views
0

我想操縱一個大的文本文件,這是一個文本,並希望使用smooks來操縱它。該文本文件包含大量的行。而且從每一行中,我必須拆分字符並從中獲取信息。我們可以在smooks中進行字符串操作和條件檢查嗎?

例如:我在java中執行以下操作;

row.substring(0, 4) 
row.substring(4, 64) 

我必須將文本內容轉換爲CSV文件。

  • 我們可以在smooks中進行完全相同的字符串操作嗎? (這是在配置smooks我可以嗎?)我相信我可以使用固定長度處理?

  • 如何在smooks配置中添加IF ELSE條件? 喜歡在java;

    如果(row.length()== 900){// DO }否則(){// DO }

+0

也許這只是一個糟糕的詞語選擇,但如果它是你正在處理的XML,那麼通過「行」解析並不是你想要做的。有許多處理XML的smooks示例(請參閱smooks.org上的示例頁面)。有一個關於處理大型XML文件的例子。基本流程是將相關的XML片段(與您的行/記錄相對應)綁定到java模型(這可以是一個簡單的java.util.Map),然後將freemarker模板應用於每個實例,輸出一行CSV)每次執行。 –

+0

對不起,它是固定長度的文本文件。我需要根據固定長度字符來識別列。但該文件可能包含200個字符行300個字符行。 AMong,我需要有選擇地處理200長度字符線。 – Ratha

回答

0

如果格式不符合平面文件閱讀器,那麼你可能可以使用正則表達式的讀者:https://github.com/smooks/smooks/tree/v1.5.1/smooks-examples/flatfile-to-xml-regex/

對於有條件的東西......你真的需要將數據片段綁定到某種類型的Java模型(真實或虛擬),然後通過在正在應用的訪問者上添加元素或通過將它們路由到另一個來處理這些片段來有條件地處理這些片段並行處理它們的過程,這是一種更好的方法f處理龐大的數據流。

+0

我應該加...如果正則表達式讀者不工作,那麼你可能需要考慮寫一個自定義閱讀器,如果你不是正則表達式忍者,這可能是最簡單的事情。 –

相關問題