【发布时间】:2012-03-25 01:17:31
【问题描述】:
我正在尝试使用 StaX 找出 IO,但我不断收到来自阅读器的“格式错误”和“过早 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 问题(this 或 this 似乎最相关),但我无法将它们与这种情况联系起来......
编辑
另外,我在不同的操作中尝试过这种读写操作,同样的事情发生了。
编辑第二个
XML 输出文件,根据要求。
<?xml version="1.0"?><!--As basic as it gets.-->
【问题讨论】:
-
请同时发布您的输入 xml。
-
无输入 XML,它是即时生成的 - 我只想创建一个标题、创建评论、关闭文档,然后再阅读它。
-
这就是我的意思。 test.xml 应该在您的文件系统中可用。
-
你能打印出 READER.nextEvent() 的值吗?
-
@AmitBhargava - 哦,好的,是的,更新了。
标签: java xml eof stax malformed