2012-08-24 20 views
2
我目前具有 XMLParse()麻烦

允许的,正如标题所说,它不断抛出这个错误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

你是否尝试修剪form.xml变量:'trim(form.xml)'?我有一些情况下导致空白引起这个错误消息。 – Seybsen

+0

''仍然会抛出此错误。 –

+0

'isXML(XMLPOST)'输出'NO'? – Seybsen

回答

3

而不是使用你应该使用ColdFusion的FORM-范围请求将处理URLdecode等,为您和分裂了身体独立变量的原始内容:

替换:

<cfset XMLPOST = GetHTTPRequestData().content> 
<cfset xmlDOM = XMLParse(XMLPOST)> 
<cfdump var="#xmlDOM#"> 

附:

<cfset XMLPOST = FORM.xml> 
<cfdump var="#XMLParse(XMLPOST)#"> 

或许您会想检查它是否被贴有isXML() - 函数有效的XML。

+0

非常好,非常感谢! –

相关问题