XMLParse( ) 抛出 Content is not allowed in prolog 错误

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

谢谢!

最佳答案

您应该使用 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/

相关文章:

java - Spring security不解析xml

java - 是否有 CFHTTP 的 Java 替代品来使用 ColdFusion 的 NTLM 身份验证?

sql-server - 通过XML解析SQL中的字符错误

c# - xml 解析字符引用 : invalid xmlChar value 0

android - 如何在 Nativescript 中设置按钮的边框半径?

xml - XSLT 根据多个条件丢弃重复项

xml - Xsd 到 rnc(或 rng)转换(unix 命令行)

coldfusion - 关于 ColdFusion 组件构造函数名称的问题

database - 我应该在查询中使用 "maxrows"吗?冷融合/SQL

swift 3 : Async queue is still blocking main thread/freezing app?