致命错误:1:1:prolog中不允许内容

我正在使用Java,我正试图从一些http链接获取XML文档。 我正在使用的代码是:

URL url = new URL(link); HttpURLConnection connection = (HttpURLConnection)url.openConnection(); connection.setRequestMethod("GET"); connection.connect(); Document doc = null; CountInputStream in = new CountInputStream(url.openStream()); doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(in); 

不要注意CountInputStream ,它是一些像常规输入流一样的特殊类。

使用上面的代码,我有时会收到错误Fatal Error :1:1: Content is not allowed in prolog 。 我认为这与xml格式不好有关,但我不知道如何修复它。

我正在将我的评论转为答案,因此可以接受,这个问题不再仍然没有答案。

最可能的原因是格式错误的响应,其中包括初始之前的字符。 因此,请查看通过HTTP传输的文档,并在服务器端修复此问题。

在XML前导码( )之前肯定有一些奇怪的字符(例如BOM )或一些空格?

有人应该将JohannesWeiß的评论标记为这个问题的答案。 这正是为什么xml文档不能只在DOM Document类中加载的原因。

http://en.wikipedia.org/wiki/Byte_order_mark

看起来您忘记在get请求中添加正确的标头(请询问REST API开发人员或您的具体API说明):

 HttpURLConnection connection = (HttpURLConnection)url.openConnection(); connection.header("Accept", "application/xml") connection.setRequestMethod("GET"); connection.connect(); 

要么

 connection.header("Accept", "application/xml;version=1") 

我发现这个问题的真正解决方案是禁用任何XML格式的后处理器 。 我添加了一个名为“ jp@gc - XML Format Post Processor ”的jp@gc - XML Format Post Processor并开始注意到错误“ Fatal Error :1:1: Content is not allowed in prolog

通过禁用后处理器已停止抛出这些错误。