背景通過與緩衝的讀者
我寫一個XML轉換器,需要從TEXTFILES輸入,並將其轉換爲XML文件讀取。在文本文件中,每條記錄都用一條線表示,每個字段用它們之間的選項卡表示。所以在文本文件中的兩個記錄將是這樣的:
fieldA fieldB fieldC
fieldA fieldB fieldC
問題
我加載的文本文件轉換成一個BufferedReader,並使用StAX的實現WoodStox創建XML。我可以看到我從我的getColumnValue方法獲取正確的記錄數據。但由於某些原因,WoodStox一遍又一遍地寫出第一條記錄,而不是每次通過while循環獲取數據。因爲我知道輸入(從getColumnValue)在正確的來了,我只能得出這樣的結論,問題在於伍德斯托克但到目前爲止,我一直無法理解爲什麼...
代碼:
while ((strRead = buffer.readLine()) != null) {
String recordInputs[] = strRead.split("\t");
writer.writeStartElement("Record");
writer.writeStartElement("FIELDA");
writer.writeCharacters(getColumnValue("BSTYPE", tableColumns, recordInputs));
writer.writeEndElement();
writer.writeStartElement("FIELDB");
writer.writeCharacters(getColumnValue("BSDDT", tableColumns, recordInputs));
writer.writeEndElement();
writer.writeStartElement("FIELDC");
writer.writeCharacters(getColumnValue("BSACTIVE", tableColumns, recordInputs));
writer.writeEndElement();
writer.writeEndElement();
}
writer.writeEndElement();
writer.writeEndDocument();
writer.flush();
writer.close();
不知道'getColumnValue()'做了什麼,但爲什麼不只是'write.writeCharacters(recordInputs [0])'? – Andreas
getColumnValue()返回一個字符串。它爲while循環的每個迭代返回正確的字符串。所以我知道getColumnValue()不是問題所在。 – user2725919
您發佈的代碼似乎沒有問題,因此您應該包含「getColumnValue」方法的代碼。我同意@Andreas說,當你直接訪問你的'recordInputs'數組的元素時,該方法可能具有什麼價值還不清楚。 – VGR