我目前在 XMLParse()
方面遇到问题,正如标题所示,它不断抛出此错误
An error occured while Parsing an XML document.
Content is not allowed in prolog.
目前我的代码非常基础,我只是想让它转储 XML 值。
<cfset XMLPOST = GetHTTPRequestData().content>
<cfset xmlDOM = XMLParse(XMLPOST)>
<cfdump var="#xmlDOM#">
我已经尝试过Ben Nadels确定是否是 BOM 的方法,他的转储给了我这个输出
[x] - 120
[m] - 109
[l] - 108
[=] - 61
[%] - 37
[3] - 51
在我看来,这个角色没有问题。
XML 正在发布到我们的服务器,所以我想知道是否是它导致了问题?正在发布的 XML 采用这种格式
xml=%3Cjob%3E%0D%0A++++%3Cjobref%3EExample+jobref%3C%2Fjobref%3E%0D%0A++++%3Cjobtitle%3EExample+jobtitle%3C%2Fjobtitle%3E%0D%0A++++%3Cdescription%3EExample+description%3C%2Fdescription%3E%0D%0A%3Cjob%3E%0D%0A++++++++++++
我有一种感觉,就是这个导致了错误?当我在文档中手动指定此 XML 作为原始形式的变量时
<job>
<jobref>Example jobref</jobref>
<jobtitle>Example jobtitle</jobtitle>
<description>Example description</description>
<job>
并解析该变量,它转储得很好。
我假设我需要做的是在尝试解析 XML Post 格式之前将其更改为其他格式?我尝试过使用 ToString()
但无济于事。
谢谢!
最佳答案
您应该使用 ColdFusion 的 FORM-Scope,而不是使用请求的原始内容,它将为您处理 URL 解码等,并将正文拆分为单独的变量:
替换:
<cfset XMLPOST = GetHTTPRequestData().content>
<cfset xmlDOM = XMLParse(XMLPOST)>
<cfdump var="#xmlDOM#">
与:
<cfset XMLPOST = FORM.xml>
<cfdump var="#XMLParse(XMLPOST)#">
也许您还想检查它是否是使用 isXML()
发布的有效 XML -功能。
关于XMLParse( ) 抛出 Content is not allowed in prolog 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12107368/