фономЧтение через файл с буферизацией чтение
Я пишу XML-конвертер, который принимает входные данные из текстовых файлов и переводит их в 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()', но почему бы просто не сделать 'writer.writeCharacters (recordInputs [0])'? – Andreas
getColumnValue() возвращает строку. Он возвращает правильную строку для каждой итерации цикла while. Поэтому я знаю, что getColumnValue() не там, где проблема. – user2725919
Кажется, что не проблема с кодом, который вы опубликовали, поэтому вы должны включить код для метода 'getColumnValue'.Я согласен с @Andreas в том, что неясно, какое значение может иметь этот метод, когда вы можете просто напрямую обращаться к элементам вашего массива 'recordInputs'. – VGR