在过去的48小时里,我一直在打击这个绝对令人愤怒的小虫,所以我想在我把笔记本电脑扔到窗外之前,我终于放弃了,试着问问.
我正在尝试从我对AWS SimpleDB的调用中解析响应XML.电路上的反应很好; 例如,它可能看起来像:
<?xml version="1.0" encoding="utf-8"?>
<ListDomainsResponse xmlns="http://sdb.amazonaws.com/doc/2009-04-15/">
<ListDomainsResult>
<DomainName>Audio</DomainName>
<DomainName>Course</DomainName>
<DomainName>DocumentContents</DomainName>
<DomainName>LectureSet</DomainName>
<DomainName>MetaData</DomainName>
<DomainName>Professors</DomainName>
<DomainName>Tag</DomainName>
</ListDomainsResult>
<ResponseMetadata>
<RequestId>42330b4a-e134-6aec-e62a-5869ac2b4575</RequestId>
<BoxUsage>0.0000071759</BoxUsage>
</ResponseMetadata>
</ListDomainsResponse>
Run Code Online (Sandbox Code Playgroud)
我将此XML传递给解析器
XMLEventReader eventReader = xmlInputFactory.createXMLEventReader(response.getContent());
Run Code Online (Sandbox Code Playgroud)
并eventReader.nextEvent();多次调用以获取我想要的数据.
这是一个奇怪的部分 - 它在本地服务器内运行良好.响应进来,我解析它,每个人都很开心.问题是,当我将代码部署到Google App Engine时,传出请求仍然有效,并且响应XML看起来100%完全相同且对我来说正确,但响应无法解析,但有以下异常:
com.amazonaws.http.HttpClient handleResponse: Unable to unmarshall response (ParseError at [row,col]:[1,1]
Message: Content is not allowed in prolog.): <?xml version="1.0" encoding="utf-8"?>
<ListDomainsResponse xmlns="http://sdb.amazonaws.com/doc/2009-04-15/"><ListDomainsResult><DomainName>Audio</DomainName><DomainName>Course</DomainName><DomainName>DocumentContents</DomainName><DomainName>LectureSet</DomainName><DomainName>MetaData</DomainName><DomainName>Professors</DomainName><DomainName>Tag</DomainName></ListDomainsResult><ResponseMetadata><RequestId>42330b4a-e134-6aec-e62a-5869ac2b4575</RequestId><BoxUsage>0.0000071759</BoxUsage></ResponseMetadata></ListDomainsResponse>
javax.xml.stream.XMLStreamException: ParseError at [row,col]:[1,1]
Message: Content is not allowed in prolog.
at com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.next(Unknown Source)
at com.sun.xml.internal.stream.XMLEventReaderImpl.nextEvent(Unknown Source)
at com.amazonaws.transform.StaxUnmarshallerContext.nextEvent(StaxUnmarshallerContext.java:153)
... (rest of lines …Run Code Online (Sandbox Code Playgroud) 我试图呼叫一个Web服务,但面临一个奇怪的行为.我们的服务器上运行了一个Web服务,但代码不对我们开放,因此无法看到墙后面发生了什么服务的所有者已经暴露了基于Web的测试客户端UI,它在文本框中输入并将显示对测试目的的响应.此输入框以下面提到的格式输入
<CONTENT>
<CONTENTID></CONTENTID>
<DOCUMENTID>DRI2</DOCUMENTID>
<LOCALECODE>en_US</LOCALECODE>
<LATEST_VERSION>false</LATEST_VERSION>
<INCREASEVIEWCOUNT>false</INCREASEVIEWCOUNT>
<ACTIVITY_TYPE></ACTIVITY_TYPE>
</CONTENT>
Run Code Online (Sandbox Code Playgroud)
它在这个用户界面上工作得很好,但是当我试图通过我的java代码调用这个Web服务时它连接以及获得服务授权但是当我试图调用上面的方法它给我以下错误消息
AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
faultSubcode:
faultString: org.xml.sax.SAXParseException: Content is not allowed in prolog.
faultActor:
faultNode:
faultDetail:
{http://xml.apache.org/axis/}stackTrace: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 org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
at javax.xml.parsers.SAXParser.parse(SAXParser.java:395)
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.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206) …Run Code Online (Sandbox Code Playgroud) 我正在使用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);
Run Code Online (Sandbox Code Playgroud)
不注意CountInputStream,它是一些像常规输入流一样的特殊类.
使用上面的代码,我有时会遇到错误Fatal Error :1:1: Content is not allowed in prolog.我认为这与xml格式错误有关,但我不知道如何修复它.
我在我的eclipse项目中打开我的主要部分时遇到了麻烦.它不断提出:
"序言中不能有内容"
我没有改变我的代码或任何东西.我不知道出了什么问题,以前有人见过这个吗?
我正在尝试使用转换xml为HTML xslt.我java.xml.transform在java中使用这个.它工作正常,直到我碰到一些xml.它说以下错误.
[Fatal Error] :1:1: Content is not allowed in prolog.
javax.xml.transform.TransformerConfigurationException:
javax.xml.transform.TransformerConfigurationException:
javax.xml.transform.TransformerException:
org.xml.sax.SAXParseException: Content is not allowed in prolog.
Run Code Online (Sandbox Code Playgroud)
所以我确保在xml声明之前没有字符.我甚至使用解决方案http://forums.sun.com/thread.jspa?messageID=10324562#10324562处理BOM
仍然没有运气,它只发生在一个xml.我甚至在编辑器中打开了xml并将其保存在带utf-8编码的文件中.这真让我抓狂.任何的想法?
更新:当您为xsl文件指定了错误的路径并且发现了文件未找到异常时,您会收到此错误.(这是我的情况.它可能对某人有所帮助.感谢您的回复)
我需要将以下文件添加到我的Tomcat的'/ conf'目录中:
<?xml version="1.0" encoding="UTF-8"?>
<Context useHttpOnly="false" path="/bbc">
<Realm className="com.bbc.tomcat.BBCSecurityRealm"/>
</Context>
Run Code Online (Sandbox Code Playgroud)
添加此文件后,Tomcat启动时出现以下错误"
ERROR ecmdefault util.digester.Digester 18:37:14,477 localhost-startStop-1 : Parse Fatal Error at line 1 column 1: Content is not allowed in prolog.
org.xml.sax.SAXParseException: Content is not allowed in prolog.
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:195)
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:174)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:388)
at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(XMLScanner.java:1427)
Run Code Online (Sandbox Code Playgroud) 我们在oracle Web logic app服务器上运行了一个带有两个集群服务器的实例.
其中一个服务器运行顺利,但另一个服务器在登录页面上发出错误.
我检查了日志但什么都没有,任何想法在哪里看?
登录页面错误:
com.sun.facelets.FaceletException: Error Parsing /content/templates/baseLayout.xhtml: Error Traced[line: 1] Content is not allowed in prolog.
at com.sun.facelets.compiler.SAXCompiler.doCompile(SAXCompiler.java:234)
at com.sun.facelets.compiler.Compiler.compile(Compiler.java:105)
at com.sun.facelets.impl.DefaultFaceletFactory.createFacelet(DefaultFaceletFactory.java:197)
at com.sun.facelets.impl.DefaultFaceletFactory.getFacelet(DefaultFaceletFactory.java:144)
at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:293)
at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:274)
at com.sun.facelets.impl.DefaultFaceletContext.includeFacelet(DefaultFaceletContext.java:145)
at com.sun.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:113)
at com.sun.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:49)
at com.sun.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:25)
at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:248)
at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:295)
at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:274)
at com.sun.facelets.impl.DefaultFaceletContext.includeFacelet(DefaultFaceletContext.java:145)
at com.sun.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:113)
at com.sun.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:49)
at com.sun.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:25)
at com.sun.facelets.impl.DefaultFacelet.apply(DefaultFacelet.java:96)
at com.sun.facelets.FaceletViewHandler.buildView(FaceletViewHandler.java:525)
at com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:567)
at org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:101)
at org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:176)
at org.springframework.faces.webflow.JsfView.render(JsfView.java:94)
at org.springframework.webflow.action.ViewFactoryActionAdapter.doExecute(ViewFactoryActionAdapter.java:40)
at org.springframework.webflow.action.AbstractAction.execute(AbstractAction.java:188)
at org.springframework.webflow.execution.ActionExecutor.execute(ActionExecutor.java:51)
at org.springframework.webflow.engine.EndState.doEnter(EndState.java:101)
at org.springframework.webflow.engine.State.enter(State.java:195)
at org.springframework.webflow.engine.Flow.start(Flow.java:536)
at org.springframework.webflow.engine.impl.FlowExecutionImpl.start(FlowExecutionImpl.java:350) …Run Code Online (Sandbox Code Playgroud) 我无法让Tomcat使用正确的expires定义发送图像.浏览器继续发送已下载图像的获取请求,Tomcat以304响应.我想要的是Tomcat将使用正确的expires头响应初始请求而没有任何Last-modified头,因此浏览器将使用本地缓存直到文件没有去每个页面加载的服务器过期,看看图像是否已更改.
我的web.xml文件中有以下定义:
<filter>
<filter-name>ExpiresFilter</filter-name>
<filter-class>org.apache.catalina.filters.ExpiresFilter</filter-class>
<init-param>
<param-name>ExpiresByType image</param-name>
<param-value>access plus 1 weeks</param-value>
</init-param>
<init-param>
<param-name>ExpiresByType text/css</param-name>
<param-value>modification plus 0 minutes</param-value>
</init-param>
<init-param>
<param-name>ExpiresByType application/javascript</param-name>
<param-value>modification plus 0 minutes</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>ExpiresFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
Run Code Online (Sandbox Code Playgroud)
任何的想法?
首先我已经彻底检查了以下问题,这个问题似乎不是一回事:
这些似乎都归结为两件事:
<?xml?>标签。encoding与<?xml?>标签中定义的不符。至于#1,我用 来检查我的文件xxd,结果显示在此处:
$ xxd sample.fo
00000000: 3c3f 786d 6c20 7665 7273 696f 6e3d 2231 <?xml version="1
00000010: 2e30 2220 656e 636f 6469 6e67 3d22 5554 .0" encoding="UT
00000020: 462d 3822 3f3e 5465 7374 206d 6174 6572 F-8"?>Test mater
00000030: 6961 6c20 6963 6f6e 7354 6869 7320 746f ial iconsThis to
00000040: 7069 6320 7465 7374 7320 7468 6520 …Run Code Online (Sandbox Code Playgroud) 我正在寻找以下问题的有效解决方案:
org.xml.sax.SAXParseException:prolog中不允许使用内容
问题是在解组文件之前(使用jaxb)跳过(或删除)前3个字节(如果存在).
我可以通过检查前三个字节然后将其后的所有内容写入新文件并使用新文件来使其工作,但这看起来非常低效.
如果存在BOM,我已经尝试将文件指针移动超过3个字节(并验证了指针位置ofc.),但是当我将输入流传递给jaxb时,它仍会抛出相同的异常; 我的直觉是文件指针正在被重置.
有没有人对此有任何想法?
谢谢
我只是在android studio上构建一个应用程序,当我在模拟器上运行它时出现错误代码.需要你的帮助
这里的代码:
Error:Execution failed for task ':app:buildInfoDebugLoader'.
> Exception while loading build-info.xml : org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; Content is not allowed in prolog.
at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:257)
at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:339)
at com.android.utils.XmlUtils.parseUtfXmlFile(XmlUtils.java:514)
at com.android.build.gradle.internal.incremental.InstantRunBuildContext.loadFromXmlFile(InstantRunBuildContext.java:626)
at com.android.build.gradle.internal.incremental.BuildInfoLoaderTask.executeAction(BuildInfoLoaderTask.java:60)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)
at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$StandardTaskAction.doExecute(DefaultTaskClassInfoStore.java:141)
at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$StandardTaskAction.execute(DefaultTaskClassInfoStore.java:134)
at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$StandardTaskAction.execute(DefaultTaskClassInfoStore.java:123)
at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:632)
at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:615)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:95)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:76)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:55)
at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:62)
at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)
at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:88)
at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:46)
at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:51)
at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54)
at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker$1.execute(DefaultTaskGraphExecuter.java:236) …Run Code Online (Sandbox Code Playgroud) 是的,我知道这个问题的一般形式一次又一次被问到.但是,我找不到任何帮助我解决问题的方法,所以我发布了这个问题,特别是我的问题.
我试图弄清楚为什么我得到一个SAXParseException(Content is not allowed in prolog.)因为OpenSAML库试图解析一些XML.我发现最有用的提示指向文件开头的错误BOM,但没有类似的东西.我还编写了一个快速而肮脏的C#.NET例程,将整个文件作为一个字节数组读取,迭代它并告诉我它们是否> = 0x80(它没有找到).XML标记为utf-8.我希望有人可以就可能出现的问题向我提供一些见解.
XML文件的初始部分,作为十六进制转储,是(注意使用0A换行符;删除换行符完全没有明显效果):
000000000 3C 3F 78 6D 6C 20 76 65-72 73 69 6F 6E 3D 22 31 |<?xml version="1|
000000010 2E 30 22 20 65 6E 63 6F-64 69 6E 67 3D 22 55 54 |.0" encoding="UT|
000000020 46 2D 38 22 3F 3E 0A 3C-6D 64 3A 45 6E 74 69 74 |F-8"?>.<md:Entit|
000000030 79 44 65 73 63 72 69 70-74 6F 72 …Run Code Online (Sandbox Code Playgroud) 我在尝试解析XML文档时遇到异常.
我在这里和这里经历过很多帖子.但我的问题仍未解决.我检查了我在标题中也没有任何空格.我用记事本创建了它,我在保存时选择编码为utf-8.
我的XML文件看起来像这样
<?xml version="1.0" encoding="UTF-8"?>
<poem>
<title>Roses are Red</title>
<l>Roses are red</l>
</poem>
Run Code Online (Sandbox Code Playgroud)
我正在使用java加载文件并解析它.我的java代码是
File xml = new File("d:\\uploads\test.xml");
try{
XMLReader xr = XMLReaderFactory.createXMLReader();
MySAXApp handler = new MySAXApp();
xr.setContentHandler(handler);
xr.setErrorHandler(handler);
FileReader r = new FileReader(xml);
xr.parse(new InputSource(r));
}
catch(Exception e)
{
log.info("Exception : "+e.getMessage());
}
Run Code Online (Sandbox Code Playgroud)
我的MySAXApp课程如下
package utility;
import java.io.FileReader;
import java.util.logging.Logger;
import org.xml.sax.XMLReader;
import org.xml.sax.Attributes;
import org.xml.sax.InputSource;
import org.xml.sax.helpers.XMLReaderFactory;
import org.xml.sax.helpers.DefaultHandler;
public class MySAXApp extends DefaultHandler {
public Logger log;
public MySAXApp () …Run Code Online (Sandbox Code Playgroud)