我目前遇到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()
,但无济于事。
谢谢!
答案 0 :(得分:3)
不应使用请求的原始内容,而应使用ColdFusion的FORM-Scope,它将为您处理URLdecode等,并将正文拆分为单独的变量:
替换:
<cfset XMLPOST = GetHTTPRequestData().content>
<cfset xmlDOM = XMLParse(XMLPOST)>
<cfdump var="#xmlDOM#">
使用:
<cfset XMLPOST = FORM.xml>
<cfdump var="#XMLParse(XMLPOST)#">
也许您还想检查它是否是使用isXML()
- 函数发布的有效XML。