XML-Body をループして、各 xml 要素を構造体に渡す方法を探しています。私はこの方法でxml本体にアクセスしました:
<cfset var x = arguments.httpRequest />
<cfset cont = xmlparse(x) />
<cfset var body = xmlsearch(cont, "//SOAP-ENV:Body")[1] />
<cfset var args = body.xmlchildren[1].xmlchildren />
<cfset xmlElements = {} />
<cfset xmlElements["#args[1].xmlName#"] = "#args[1].xmlText#" />
そのため、complexType でない場合は、args の各要素を取得できます。複雑な要素の子にアクセスするには、次のように使用しました。
<cfset var children = "" />
<cfset children = args[3].xmlchildren />
<cfset children = args[1].xmlchildren />
3 番目の要素の XML は次のようになります。
<Element>
<item>
<child1>XP_RA_10</child1>
<child2>RA-EXPRESS-KATALOG</Wmvtx>
</item>
</Element>
しかし、xmlchildren があるかどうかをチェックするメソッドを作成したいと思います。その通りにしてみた…
<cfif ArrayIsDefined(i.xmlchildren, 1)>
<cfset children = args[i].xmlchildren />
<cfif ArrayIsDefined(children[1].xmlchildren, 1)>
<!--- if more xmlchildren exist --->
<cfelse>
<!if one xmlchildren exist --->
</cfif>
<cfelse>
<!--- if xmlchidren doesn't exist --->
</cfif>
...しかし、要素にアクセスして、作成した構造体に要素を挿入することはできません。構造体が未定義であるというエラーが常に発生します....
子要素があるかどうかを確認する正しい方法はありますか?