代码在文章的末尾。我做了一些谷歌搜索,如果在XML文件中的根数据标记之前有数据,看起来就会出现这个错误。我已经查看了传入的字节流,它以60或“<”开头。所以在文件的开头没有奇怪的Byte-Order-Mark或其他东西。
这个问题的其他原因可能是什么?
谢谢,所以!
XMLReader r = XMLReaderFactory.createXMLReader();
SAXSource source = new SAXSource(new NamespaceFilter(r), new InputSource(is));
validator.validate(source, null);发布于 2011-04-17 04:09:03
根元素之外唯一允许的东西是XML声明、注释和处理指令。因此,文档可能正确启动,但在根元素之前有一些其他垃圾(非空格)。如果解析器不知道如何处理它,BOM也可能导致这个问题,但这里可能不是这种情况。
您还可以考虑尝试使用Stax解析器,例如Woodstox,因为虽然它可能会遇到相同的问题(不管是什么),但它应该能够为您提供有关实际问题的更多信息--您得到的消息太稀疏,解析器是惰性的;它至少应该指示位置(相对于文件开头)。
发布于 2011-04-17 04:27:22
我在使用压缩时看到过这个问题。未压缩的流有时会获得额外的字符。
https://stackoverflow.com/questions/5680195
复制相似问题