“ Prolog中不允许内容”

问题描述

| 代码在帖子末尾。 进行了一些谷歌搜索,如果在XML文件中的根数据标记之前有数据,则会出现此错误。我已经查看了传入的字节流,它以60或\'<\'开头。因此,文件开头没有奇怪的字节顺序标记或其他内容。 还有什么可能导致此问题? 非常感谢!
 XMLReader r = XMLReaderFactory.createXMLReader();
 SAXSource source = new SAXSource(new NamespaceFilter(r),new InputSource(is));

 validator.validate(source,null);
    

解决方法

根元素之外唯一允许的内容是XML声明,注释和处理指令。因此,文档可能正确启动,但根元素之前还有一些其他废话(非空白)。如果解析器不知道如何处理,BOM的确也可能导致此问题,但是这里可能不是这种情况。 您也可以考虑尝试使用诸如Woodstox之类的Stax解析器,因为尽管它可能会遇到相同的问题(无论是什么问题),但它应该能够为您提供有关实际问题的更多信息-消息太稀疏,解析器正在懒;它至少应指出位置(相对于文件开头)。     ,使用压缩时,我已经看到此问题。未压缩的流有时会得到一个额外的字符。