XmlParse

説明

XML テキストを XML ドキュメントオブジェクトに変換します。

戻り値

XML ドキュメントオブジェクト

カテゴリ

変換関数XML 関数

関数のシンタックス

XmlParse(xmlText [, caseSensitive ], validator])

関連項目

cfxmlIsXMLToStringXmlFormatXmlNewXmlSearchXmlTransformXmlValidate、『ColdFusion アプリケーションの開発』のUsing XML and WDDX

履歴

ColdFusion MX 7:

  • validator パラメータが追加されました。

  • xmlText パラメータでファイル名と URL を使用できるようになりました。

  • 相対 URL および相対パス名を使用できるようになりました。

ColdFusion MX: この関数が追加されました。

パラメータ

パラメータ

説明

xmlText

次のいずれかです。

  • XML テキストを含む文字列

  • XML ファイルの名前

  • XML ファイルの URL。有効なプロトコル識別子は http、https、ftp、および file です。

caseSensitive

  • Yes: ドキュメント要素と属性の大文字と小文字の区別を保持します。

  • No: デフォルト

validator

次のいずれかです。

  • DTD (ドキュメントタイプ定義) または XML スキーマファイルの名前

  • DTD またはスキーマファイルの URL。有効なプロトコル識別子は http、https、ftp、および file です。

  • DTD またはスキーマの文字列表記

  • 空の文字列。この場合、XML ファイルには、ドキュメントの検証に使用する DTD またはスキーマ識別子が埋め込まれている必要があります。

使用方法

パラメータで相対 URL または相対パス名を指定した場合は、現在の ColdFusion ページを含んでいるディレクトリ (URL の場合は論理ディレクトリ) がパスのルートとして使用されます。

大文字と小文字だけが異なる複数の識別子がそれぞれ別のコンポーネントを参照するかどうかは、caseSensitive パラメータ値によって決まります。例 :

  • true の場合、要素または属性名 "name" および "NAME" は、別々の要素または属性を参照します。

  • false の場合、これらの名前は同じ要素または属性を参照します。

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

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

オプションの validator パラメータは、ドキュメントを検証するために使用する DTD またはスキーマを指定します。パーサーで検証エラーが発生すると、ColdFusion はエラーを生成してドキュメントの解析を停止します。XmlParse 関数でドキュメントを検証するには、validator パラメータを指定します。validator パラメータを指定しない場合は、XML ファイルで xsi:noNamespaceSchemaLocation タグを使用して DTD またはスキーマが指定されている必要があります。validator パラメータを指定する場合は、caseSensitive パラメータも指定します。

注意: XMLParse 関数の 3 番目のパラメータとして空の文字列を指定し、XML ドキュメント内で xsi:noNamespaceSchemaLocation などの検証を指定する場合は、完全な URL を指定する必要があります。ただし、XMLValidate を使用した場合は、検証を実行している CFML テンプレートからの相対位置を示すファイル名だけでもかまいません。

validator パラメータを指定しない場合は、xmlText パラメータで整形式の XML フラグメントを指定することができます。ドキュメント全体を指定する必要はありません。

注意: XML ドキュメントオブジェクトを変換して文字列に戻すには、ToString 関数を使用してください。

次の例には 3 つの部分があります。つまり、XML ファイル、DTD ファイル、および検証のために XML ファイルを解析して DTD ファイルを使用する CFML ページです。CFML ファイルは、返された XML ドキュメントオブジェクトを表示します。無効な XML の結果を表示するには、bmenuD.xml を修正します。

注意: 次の例で使用する DTD は、XmlValidate の例で使用するスキーマと同じ XML 構造を表しています。

"custorder.xml" ファイルは次のとおりです。

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE order SYSTEM "C:\ColdFusion\wwwroot\examples\custorder.dtd"> 
<order id="4323251"> 
    <customer firstname="Philip" lastname="Cramer" accountNum="21"/> 
    <items> 
        <item id="43"> 
            <name>    Deluxe Carpenter&apos;s Hammer</name> 
            <quantity>1</quantity> 
            <unitprice>15.95</unitprice> 
        </item> 
        <item id="54"> 
            <name>    36&quot; Plastic Rake</name> 
            <quantity>2</quantity> 
            <unitprice>6.95</unitprice> 
        </item> 
        <item id="68"> 
            <name>    Standard paint thinner</name> 
            <quantity>3</quantity> 
            <unitprice>8.95</unitprice> 
        </item> 
    </items> 
</order>

"custorder.dtd" ファイルは次のとおりです。

<!ELEMENT order (customer, items)> 
<!ATTLIST order 
    id CDATA #REQUIRED> 
<!ELEMENT customer EMPTY> 
<!ATTLIST customer 
    firstname CDATA #REQUIRED 
    lastname CDATA #REQUIRED 
    accountNum CDATA #REQUIRED> 
<!ELEMENT items (item+)> 
<!ELEMENT item (name, quantity, unitprice)> 
<!ATTLIST item  
    id CDATA #REQUIRED> 
<!ELEMENT name (#PCDATA)> 
<!ELEMENT quantity (#PCDATA)> 
<!ELEMENT unitprice (#PCDATA)>

CFML ファイルは次のとおりです。XML ファイルのファイル名および DTD の URL を使用します。XML および URL のパスは絶対パスでなければなりません。

<cfset 
myDoc=XMLParse("C:\ColdFusion\wwwroot\examples\custorder.xml", 
false, "http://localhost:8500/examples/custorder.dtd")> 
Dump of myDoc XML document object<br> 
<cfdump var="#myDoc#">