Java StaX:prolog中不允许包含内容
我有下面的(测试)XML文件和使用StaX的Java代码。我想将这段代码应用于一个大约30GB大但元素相当小的文件,所以我认为StaX是一个不错的选择。我得到以下错误: 线程“main”javax.xml.stream.XMLStreamException中出现异常:[row,col]:[1,1]处的ParseError消息:prolog中不允许包含内容 位于com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.next(XMLStreamReaderImpl.java:598) 位于at.tuwien.mucke.util.xml.staxtest.staxtest.main(staxtest.java:18) 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处 在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)中 在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中 位于java.lang.reflect.Method.invoke(Method.java:601) 位于com.intellij.rt.execution.application.AppMain.main(AppMain.java:120) }解决了它Java StaX:prolog中不允许包含内容,java,xml,stax,Java,Xml,Stax,我有下面的(测试)XML文件和使用StaX的Java代码。我想将这段代码应用于一个大约30GB大但元素相当小的文件,所以我认为StaX是一个不错的选择。我得到以下错误: 线程“main”javax.xml.stream.XMLStreamException中出现异常:[row,col]:[1,1]处的ParseError消息:prolog中不允许包含内容 位于com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.next(XMLS
我在定义
中添加了编码,并且我必须将其存储在ANSI中(就像Notepad++假定的UTF-8一样)。傻 您是否尝试删除xml声明?(建议使用,但仍然可选)是。我还发现,当文件为空时,我得到了相同的结果。文件本身似乎有问题。。。编码?隐藏的角色?解决了!我添加并必须将其存储在ANSI中(就像记事本++假定的UTF-8。愚蠢!我认为这不是一个好主意。XML默认使用UTF-8是有原因的。我非常确定您的问题源于(不必要)使用UTF-8。删除它(并停止任何应用程序插入UTF-8),您应该会没事的。另请参阅
<?xml version='1.0' encoding='utf-8'?>
<catalog>
<book id="bk101">
<author>Gambardella, Matthew</author>
<title>XML Developer's Guide</title>
<price>44.95</price>
<description>An in-depth look at creating applications
with XML.</description>
</book>
<book id="bk102">
<author>Ralls, Kim</author>
<title>Midnight Rain</title>
<price>5.95</price>
<description>A former architect battles corporate zombies,
an evil sorceress, and her own childhood to become queen
of the world.</description>
</book>
</catalog>
package xml.staxtest;
import java.io.*;
import javax.xml.stream.*;
public class StaXTest {
public static void main(String[] args) throws Exception {
XMLInputFactory xif = XMLInputFactory.newInstance();
XMLStreamReader streamReader = xif.createXMLStreamReader(new FileReader("D:/Data/testFile.xml"));
while(streamReader.hasNext()){
int eventType = streamReader.next();
if(eventType == XMLStreamReader.START_ELEMENT){
System.out.println(streamReader.getLocalName());
}
//... more to come here later ...
}
}