CFXML  
説明

タグ本文内のマークアップを含む ColdFusion XML ドキュメントを作成します。このタグには、XML タグおよび CFML タグを含めることができます。ColdFusion では、タグの本文に含まれている CFML コードを処理し、結果のテキストを XML ドキュメントオブジェクト変数に割り当てます。これは、常に Unicode で保管されます。

 
カテゴリ

拡張タグ

 
シンタックス
<CFXML 
   variable="xmlVarName" 
   caseSensitive="yes"、"no">
 
関連項目

IsXmlDoc、IsXmlElem、IsXmlRoot、ToString、XmlChildPos、XmlNew、XmlParse、XmlSearch、XmlTransform、『ColdFusion MX 開発ガイド』の第35章の「XML および WDDX の使用」

 
ヒストリ

ColdFusion MX 7: テキストの先頭で XML 宣言を使用できるようになりました。

ColdFusion MX: このタグが追加されました。

 
使用方法

XML オブジェクトで大文字と小文字が区別される場合、ドット表記法を使用して要素または属性の名前を参照することはできません。代わりに、連想配列 (括弧) 表記法による名前を使用するか、大文字と小文字を区別する名前を使わない参照を使用 (xmlChildren[1] など) します。次のコードで、最初の行は大文字と小文字を区別する XML オブジェクトに機能します。2 番めと 3 番めの行ではエラーが発生します。

MyDoc.xmlRoot.XmlAttributes["Version"] = "12b";
MyDoc.xmlRoot.XmlAttributes.Version = "12b";
MyDoc.MyRoot.XmlAttributes["Version"] = "12b";

XmlFormat 関数を使用して、&、>、< などの特殊文字をエスケープします。

XML ドキュメントオブジェクトを文字列に戻すには、ColdFusion で <?xml version="1.0" encoding="UTF-8" ?> XML 宣言が自動的に先頭に挿入されるときに ToString 関数を使用します。

宣言を変更して、別のエンコーディングを指定するには、Replace 関数を使用します。ブラウザや他のアプリケーションに返されるテキストのエンコーディングを指定するには、cfcontent タグを使用します。

次の例は、この処理を示しています。

<cfprocessingdirective suppresswhitespace="Yes">
<cfcontent type="text/xml; charset=utf-16">
<cfxml variable="xmlobject">
<breakfast_menu>
   <food>
      <name quantity="50">Belgian Waffles</name>
      <description>Our famous Belgian Waffles</description>
   </food>
</breakfast_menu>
</cfxml>

<!--- <cfdump var="#xmlobject#">--->

<cfset myvar=toString(xmlobject)>
<cfset mynewvar=replace(myvar, "UTF-8", "utf-16")>

<!---<cfdump var="#mynewvar#">--->

<cfoutput>#mynewvar#</cfoutput>
</cfprocessingdirective>

cfprocessingdirective タグを使用することにより、ColdFusion が XML 宣言の前に空白文字を置かないようにすることができます。

 

次の例では、ルート要素が MyDoc であるドキュメントオブジェクトを作成します。このオブジェクトには、ColdFusion 変数 testVar の値を示すテキストが含まれています。コード例では、4 つのネストされた子要素を作成します。これらはインデックスが付けられた cfloop タグを使用して生成できます。cfdump タグを使用して、XML ドキュメントオブジェクトを表示します。

<cfset testVar = True>
<cfxml variable="MyDoc">
   <?xml version='1.0' encoding='utf-8' ?>
   <MyDoc>
      <cfif testVar IS True>
         <cfoutput>testVar の値は True です。</cfoutput>
      <cfelse>
         <cfoutput>testVar の値は False です。</cfoutput>
      </cfif>
      <cfloop index = "LoopCount" from = "1" to = "4">
         <childNode>
            これは子ノード <cfoutput>#LoopCount# です。</cfoutput>
         </childNode>
      </cfloop>
   </MyDoc>
</cfxml>
<cfdump var=#MyDoc#>

VARIABLE  
   
 

ドキュメントオブジェクトの名前です。

CASESENSITIVE  
  オプション
 
Default value: "no"
  • yes: ドキュメント要素と属性の大文字と小文字の区別を保持します。
  • no