我對Java編程比較陌生,並且正在嘗試創建一個可以幫助一些同事的應用程序。Java,如何從大文件中提取一些文本並將其導入到較小的文件中
我想要做的事情的背景是,讀取大型文件的內容,最多可能超過400,000行,其中包含XML但不是有效的XML文檔,因爲它是一種日誌。
我所要做的,是建立在用戶輸入一個唯一的ID的應用程序,這然後掃描文件找到,如果它存在,如果這樣做,而且往往是唯一的ID在生產中出現幾次XML,那麼我想向後遍歷節點ID <documentRequestMessage>
,然後將所有節點從該節點複製到其關閉節點,並將其放入自己的文檔中。
我知道如何創建新文檔,但我正努力找出如何從本質上'查找倒退'並將所有內容複製到結束標記,非常感謝任何幫助。
編輯
不幸的是,我一直無法弄清楚如何迄今實施的任意的三點建議。
該correlationId是前面提到的獨特參考。
當前的代碼我有,其工作方式和結果輸出到控制檯,是
String correlationId = correlationID.getText();
BufferedReader bf = new BufferedReader(new FileReader(f));
System.out.println("Looking for " + correlationId);
int lineCount = 0;
String line;
while ((line = bf.readLine()) != null) {
lineCount++;
int indexFound = line.indexOf(correlationId);
if (indexFound > -1) {
System.out.println("Found CorrelationID on line " + "\t" + lineCount + "\t" + line);
}
}
bf.close();
任何進一步的幫助greatfully讚賞,我不要求別人能把它寫對我來說,只是一些真明確基本指令:)請
EDIT 2
我試圖讀取並可以發現提取該文件的副本here
問題 - 你怎麼知道它不是有效的XML?你能發表一個關於它的「無效」的樣本嗎? –
@SeanBright我知道它不是有效的XML的原因,是因爲 1)XMLSpy不會驗證它。 2)它包含多個<?xml version =「1.0」encoding =「UTF-8」?>(585個條目)! 3)另外還有我不認爲是正確的XML註釋的評論,例如[2013-05-29 12:18:57,626]默認:4'#DocumentCompositionLogger sca.component.mediation.java.Custom1322734159344 INFO - requestDocumentProductionPackG02請求有效載荷收到>>>>>>我已經複製一個文件到這裏,所以你可以看到我正在嘗試閱讀的整個文檔,可以在這裏找到(http://db.tt/Sw0C4tWL) – Chris
@ Gilbert的建議看起來很直截了當,你能告訴你實施它有什麼麻煩嗎? – Vitaliy