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#">

それがBOMかどうかを判断するBen Nadelsの方法を試してみましたが、彼のダンプからこの出力が得られました

[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 を使用する必要があります。これは、URL デコードなどを処理し、本文を分割して変数を分離します。

交換:

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

と:

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

-functionで投稿された有効な XML かどうかも確認する必要があるかもしれませんisXML()

于 2012-08-24T11:31:09.273 に答える