'序言中不能有内容'

时间:2011-04-15 17:18:40

标签: java xml sax saxparser

代码在帖子的末尾。 做了一些谷歌搜索,如果您的XML文件中的根数据标记之前有数据,则看起来会发生此错误。我查看了正在进入的字节流,它以60或'<'开头。所以在文件的开头没有一些奇怪的字节顺序标记。

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

非常感谢!

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

 validator.validate(source, null);

2 个答案:

答案 0 :(得分:0)

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

你也可以考虑尝试像Woodstox这样的Stax解析器,因为虽然它可能遇到同样的问题(无论它是什么),它应该能够给你更多关于实际问题的信息 - 你得到的消息太稀疏了,解析器很懒;它至少应该指明位置(相对于文件的开头)。

答案 1 :(得分:0)

我在使用压缩时遇到过这个问题。未压缩的流有时会获得额外的字符。