Я пытаюсь выяснить IO, используя StaX, но я продолжаю получать сообщения о «неправильных» и «преждевременных EOF» от читателя. Это чтение кода, созданного с использованием StaX, как в следующем примере.
Я свел свой код к простейшей конфигурации и все еще получаю ошибку. Откуда это?
SSCCE (должно выдать ошибку)
package XMLTest;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import javax.xml.stream.XMLEventFactory;
import javax.xml.stream.XMLEventReader;
import javax.xml.stream.XMLEventWriter;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLOutputFactory;
public class SaveLoadTest {
/**
* @param args
*/
public static void main(String[] args) throws Exception {
final String FILE = "test.xml";
//////////// WRITE
final XMLOutputFactory OFACT = XMLOutputFactory.newInstance();
final XMLEventFactory EFACT = XMLEventFactory.newInstance();
final XMLEventWriter WRITER = OFACT.createXMLEventWriter(new FileOutputStream(FILE));
WRITER.add(EFACT.createStartDocument());
WRITER.add(EFACT.createComment("As basic as it gets."));
WRITER.add(EFACT.createEndDocument());
WRITER.close();
//////////// READ
final XMLInputFactory IFACT = XMLInputFactory.newInstance();
final XMLEventReader READER = IFACT.createXMLEventReader(new FileInputStream(FILE));
while (READER.hasNext()) {
READER.nextEvent();
}
}
}
И ошибка:
Exception in thread "main" javax.xml.stream.XMLStreamException: ParseError at [row,col]:[1,49]
Message: Premature end of file.
at com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.next(XMLStreamReaderImpl.java:594)
at com.sun.xml.internal.stream.XMLEventReaderImpl.nextEvent(XMLEventReaderImpl.java:85)
at XMLTest.SaveLoadTest.main(SaveLoadTest.java:34)
Я смотрел на несколько других вопросов SO ( это или это кажется наиболее актуальным), но у меня возникли проблемы, связывая их с этой ситуацией ...
EDIT
Кроме того, я пробовал это чтение и запись в отдельных операциях, и происходит то же самое.
РЕДАКТИРОВАТЬ ВТОРОЕ
Выходной файл XML, согласно запросу.
<?xml version="1.0"?><!--As basic as it gets.-->