如何在java中处理[xX] [mM] [lL]

时间:2014-11-11 10:04:53

标签: java xml xml-parsing stax

所以我有一个程序正在读取大型XML文件,其中包含多个数据条目。因此,数据库我最初使用它包含40,000个用XML文件编写的单独条目,但是您可以下载一个包含所有条目的XML文件。但是,因此,XML声明元素: -

<?xml version="1.0" encoding="UTF-8"?>
在整个文档中多次调用

,我想知道是否通过使用StAX解析器来解决这个问题。

编辑:应该说我无法正确解析我的文档并阅读所有内容,因为它不断返回错误: -

Exception in thread "main" javax.xml.stream.XMLStreamException: ParseError at [row,col]:[1062,6]
Message: The processing instruction target matching "[xX][mM][lL]" is not allowed.

因为多次声明了xml声明。 感谢

2 个答案:

答案 0 :(得分:0)

在您消除虚假的 <?xml ?> 声明之前,您不能将该文件视为XML,因为它不是well-formed。首先将它作为文本(手动或以编程方式)处理,以在尝试将其解析为XML之前消除额外的XML声明。

有关所有方式的一般信息

  

匹配“[xX] [mM] [lL]”的处理指令目标不是   允许的。

错误产生并解决了每种方式的补救措施,请参阅this answer(由Stefan建议)。

答案 1 :(得分:0)

此行称为XML序言:

<?xml version="1.0" encoding="UTF-8"?>

XML序言是可选的。如果存在,它必须在文档中排在首位

它不应在文档中的其他任何地方重复。

来源:XMLProlog-W3Scools