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