为了账号安全,请及时绑定邮箱和手机立即绑定

org.xml.sax.SAXParseException:Prolog中不允许内容。

org.xml.sax.SAXParseException:Prolog中不允许内容。

largeQ 2019-06-24 13:06:39
org.xml.sax.SAXParseException:Prolog中不允许内容。我有一个基于Java的Web服务客户端连接到JavaWeb服务(在Axis 1框架上实现)。我在日志文件中得到以下异常:Caused by: org.xml.sax.SAXParseException: Content is not allowed in prolog.     at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)     at org.apache.xerces.util.ErrorHandlerWrapper.fatalError(Unknown Source)     at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)     at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)     at org.apache.xerces.impl.XMLScanner.reportFatalError(Unknown Source)     at org.apache.xerces.impl.XMLDocumentScannerImpl$PrologDispatcher.dispatch(Unknown Source)     at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)     at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)     at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)     at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)     at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)     at javax.xml.parsers.SAXParser.parse(Unknown Source)     at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)     at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)     at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)     at org.apache.ws.axis.security.WSDoAllReceiver.invoke(WSDoAllReceiver.java:114)     at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)     at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)     at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)     at org.apache.axis.client.AxisClient.invoke(AxisClient.java:198)     at org.apache.axis.client.Call.invokeEngine(Call.java:2784)     at org.apache.axis.client.Call.invoke(Call.java:2767)     at org.apache.axis.client.Call.invoke(Call.java:2443)     at org.apache.axis.client.Call.invoke(Call.java:2366)     at org.apache.axis.client.Call.invoke(Call.java:1812)
查看完整描述

3 回答

?
烙印99

TA贡献1829条经验 获得超13个赞

这通常是由xml声明之前的空白引起的,但它可能是任何文本就像一个破折号或者任何一个角色。我说,通常是由空白引起的,因为人们认为空白总是可以忽略的,但这里不是这样的。


另一件经常发生的事情是UTF-8 BOM(字节顺序标记),其中允许在XML声明之前将文档作为字符流传递给XML解析器,而不是作为字节流处理。

如果模式文件(.xsd)用于验证XML文件,并且其中一个模式文件具有UTF-8 BOM.


查看完整回答
反对 回复 2019-06-24
?
倚天杖

TA贡献1828条经验 获得超3个赞

将不存在的XML文件传递给解析器时。例如,你通过了

new File("C:/temp/abc")

当只有C:/temp/abc.xml文件存在于您的文件系统时

在这两种情况下

builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();document = builder.parse(new File("C:/temp/abc"));

DOMParser parser = new DOMParser();parser.parse("file:C:/temp/abc");

所有这些都给出了相同的错误消息。

非常令人失望的bug,因为下面的跟踪

javax.servlet.ServletException
    at org.apache.xerces.parsers.DOMParser.parse(Unknown Source)...Caused by:
     org.xml.sax.SAXParseException: Content is not allowed in prolog.... 40 more

没有提到“文件名不正确”或“这样的文件不存在”的事实。在我的例子中,我有绝对正确的XML文件,必须花2天来确定真正的问题。


查看完整回答
反对 回复 2019-06-24
  • 3 回答
  • 0 关注
  • 2015 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号