我正在寻找一种遍历 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#" />
所以如果它不是复杂类型,我可以获取 args 的每个元素。要访问我以这种方式使用的复杂元素的子元素:
<cfset var children = "" />
<cfset children = args[3].xmlchildren />
<cfset children = args[1].xmlchildren />
第三个元素的 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>
...但我无法访问元素以将它们插入到我创建的结构中。总是收到结构未定义的错误....
检查是否有任何子元素是正确的方法吗?