我試圖找出使用StaX IO,但我不斷從讀者變得「畸形」和「過早的EOF」錯誤。這是使用StaX創建的閱讀代碼,如以下示例所示。Java,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)
我看了一下其他幾個做題(this或this似乎最相關的),但我m有困難與他們有關這種情況...
編輯
此外,我已經嘗試過這種閱讀和寫作在單獨的操作,併發生同樣的事情。
編輯第二
XML輸出文件,作爲請求。
<?xml version="1.0"?><!--As basic as it gets.-->
請張貼您的輸入xml。 – 2012-03-25 01:20:31
沒有輸入XML,它是隨時可用的 - 我只是想創建一個標題,創建一個註釋,關閉文檔,然後再讀取它。 – Ben 2012-03-25 01:26:49
這就是我的意思。 test.xml應該在你的文件系統中可用。 – 2012-03-25 01:36:06