代码在帖子的末尾。 做了一些谷歌搜索,如果您的XML文件中的根数据标记之前有数据,则看起来会发生此错误。我查看了正在进入的字节流,它以60或'<'开头。所以在文件的开头没有一些奇怪的字节顺序标记。
这个问题可能还有什么原因?
非常感谢!
XMLReader r = XMLReaderFactory.createXMLReader();
SAXSource source = new SAXSource(new NamespaceFilter(r), new InputSource(is));
validator.validate(source, null);
答案 0 :(得分:0)
根元素之外允许的唯一内容是XML声明,注释和处理指令。因此,文档可能正确启动,但在根元素之前还有一些其他的废话(非空白)。如果解析器不知道如何处理它,BOM确实可能导致这个问题,但这可能不是这种情况。
你也可以考虑尝试像Woodstox这样的Stax解析器,因为虽然它可能遇到同样的问题(无论它是什么),它应该能够给你更多关于实际问题的信息 - 你得到的消息太稀疏了,解析器很懒;它至少应该指明位置(相对于文件的开头)。
答案 1 :(得分:0)
我在使用压缩时遇到过这个问题。未压缩的流有时会获得额外的字符。