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

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)


largeQ
浏览 2016回答 3
3回答

烙印99

这通常是由xml声明之前的空白引起的,但它可能是任何文本就像一个破折号或者任何一个角色。我说,通常是由空白引起的,因为人们认为空白总是可以忽略的,但这里不是这样的。另一件经常发生的事情是UTF-8 BOM(字节顺序标记),其中是允许在XML声明之前将文档作为字符流传递给XML解析器,而不是作为字节流处理。如果模式文件(.xsd)用于验证XML文件,并且其中一个模式文件具有UTF-8 BOM.

倚天杖

将不存在的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天来确定真正的问题。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java