0

代码在文章末尾。进行了一些谷歌搜索,如果您在 XML 文件中的根数据标记之前有数据,则看起来会发生此错误。我查看了传入的字节流,它以 60 或“<”开头。因此,文件开头没有一些奇怪的 Byte-Order-Mark 或其他东西。

还有什么可能是这个问题的原因?

谢谢!

 XMLReader r = XMLReaderFactory.createXMLReader();
 SAXSource source = new SAXSource(new NamespaceFilter(r), new InputSource(is));

 validator.validate(source, null);
4

2 回答 2

0

根元素之外唯一允许的内容是 XML 声明、注释和处理指令。因此,文档可能正确启动,但在根元素之前还有一些其他废话(非空白)。如果解析器不知道如何处理它,BOM 确实也可能导致此问题,但这里可能不是这种情况。

您也可以考虑尝试诸如 Woodstox 之类的 Stax 解析器,因为虽然它可能会遇到相同的问题(无论它是什么),但它应该能够为您提供有关实际问题的更多信息——您收到的消息太稀疏,解析器正在懒惰的; 它至少应该指示位置(相对于文件的开头)。

于 2011-04-16T20:09:03.103 回答
0

我在使用压缩时看到了这个问题。未压缩的流有时会得到一个额外的字符。

于 2011-04-16T20:27:22.190 回答