我有一個包含這樣的代碼的XML基.tbx文件:多單詞替換用java
<descripGrp>
<descrip type="subjectField">406001</descrip>
</descripGrp>
<langSet xml:lang="en">
<tig>
<term>competence of the Member States</term>
<termNote type="termType">fullForm</termNote>
<descrip type="reliabilityCode">3</descrip>
</tig>
</langSet>
<langSet xml:lang="pl">
<tig>
<term>kompetencje państw członkowskich</term>
<termNote type="termType">fullForm</termNote>
<descrip type="reliabilityCode">3</descrip>
</tig>
</langSet>
</termEntry>
<termEntry id="IATE-290">
<descripGrp>
<descrip type="subjectField">406001</descrip>
</descripGrp>
我想搜索和整個內更換(幾乎50 MIB)文件用於從所述碼字段「subjectField」並替換爲正確的文本,例如。政治意識形態爲406001,政治制度爲406002。 我有代碼和相應名稱的表: 406001政治意識形態 406002政治制度 406003政治哲學
有五百強這樣的代碼用手這樣它會採取像永遠。 我不是程序員(我是學生),但我知道一個小小的Java,所以我做了一些小應用程序,我認爲它會幫助我,但結果令人沮喪(幸運的是,我並不氣餒:))
這就是我寫的,結果是它的工作非常緩慢,根本不替代這些代碼。它在15分鐘內處理了文件的1/5(!)。此外,輸出文件中沒有新的行字符,因此整個xml代碼都在一行中。
任何提示我應該走哪條路?
File log= new File("D:\\IATE\\export_EN_PL_2017-03-07_All_Langs.tbx"); // TBX file to be processed
File newe = new File("D:\\IATE\\now.txt"); // output file
String search = "D:\\IATE\\org.txt"; // file containing codes "40600" etc
String replace = "D:\\IATE\\rplc.txt"; // file containing names
try {
FileReader fr = new FileReader(log);
String s;
String s1;
String s2;
String totalStr = "";
String tot1 = "";
String tot2 = "";
FileReader fr1 = new FileReader(search);
FileReader fr2 = new FileReader(replace);
try (BufferedReader br = new BufferedReader(fr)) {
try (BufferedReader br1 = new BufferedReader(fr1)) {
try (BufferedReader br2 = new BufferedReader(fr2)) {
while ((s = br.readLine()) != null) {
totalStr += s;
while((s1 = br1.readLine()) != null){
tot1 += s1;
while ((s2 = br2.readLine()) != null){
tot2 += s2;
}
}
totalStr = totalStr.replaceAll(tot1, tot2);
FileWriter fw = new FileWriter(newe);
fw.write(totalStr);
fw.write("\n");
fw.close();
}
} catch (Exception e) {
e.printStackTrace();
}
} catch (Exception e) {
e.printStackTrace();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
你似乎不是必要進行製作方式更多的讀者。你說你有一個表格將代碼分配給一個相應的名字,它是什麼類型的文件,它是如何組織的? –
我有兩個文件,第一個有數字,代碼:org.txt eg。 406003並在另一個名稱中聲明:rplc.txt eg。政治意識形態。這就像一個分成兩個文件的兩列表格。 – Hipacy
使用Java,您至少可以使用Saxon 9(可從Maven和Sourceforge免費獲得)運行XSLT 2.0,所以我會考慮使用XSLT 2.0來執行此操作。這當然不是用字符串處理和簡單文件IO來做到這一點的正確方法。 –