Java 当我';我在使用stax2 XMLInputFactory2吗?
使用stax2解析大型xml文件(500-800Mb),如下所示:Java 当我';我在使用stax2 XMLInputFactory2吗?,java,stax,woodstox,Java,Stax,Woodstox,使用stax2解析大型xml文件(500-800Mb),如下所示: XMLStreamReader2 reader = (XMLStreamReader2) xmlif2.createXMLStreamReader(fileName, new FileInputStream(fileName)); 将其转换为特定的csv并遇到下一个问题。某些文本节点包含“;”序列。在输出文件中,必须将其替换为西里尔字母“Ё”。但当解析器发现序列“;”时,抛出异常: [com.ctc.wstx.
XMLStreamReader2 reader = (XMLStreamReader2) xmlif2.createXMLStreamReader(fileName, new FileInputStream(fileName));
将其转换为特定的csv并遇到下一个问题。某些文本节点包含“;”序列。在输出文件中,必须将其替换为西里尔字母“Ё”。但当解析器发现序列“;”时,抛出异常:
[com.ctc.wstx.exc.WstxLazyException]
com.ctc.wstx.exc.WstxParsingException:非法字符实体:
扩展字符(代码0x1位于[行、列、系统id]
在斯塔克斯,我也有同样的例外
我可以为xml流读取器设置一些转换,并在解析时将;替换为Ёautomative???
我可以创建中间文件,在其中替换所有文件,然后解析它,但这不是一个好主意。错误消息表明您的XML格式不正确:要么它的编码被破坏。 听起来好像它包含一个Unicode字符的实体引用,值为0x1。 这对于XML1.0是不允许的;尽管对于XML1.1是合法的。
但也许XML文档没有在其XML声明中声明“version='1.0'”?XML文件有下一个标题
如果更改XML版本解决了问题,那么在解析之前这样做会比替换所有;Sequences更好。对了,XML 1.0不允许字符实体引用控制字符(0x1-0x1F,lf/cr/tab除外)。所以尝试将1.0更改为1.1,应该避免出现问题。