在prolog错误中不允许使用XMLParse()抛出内容

时间:2012-08-24 10:11:45

标签: xml coldfusion xml-parsing

我目前遇到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(),但无济于事。

谢谢!

1 个答案:

答案 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。