2

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()但无济于事。

谢谢!

4

1 回答 1

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()-function 发布的有效 XML。

于 2012-08-24T11:31:09.273 回答