我正在寻找一种方法来遍历XML-Body并将每个xml元素传递到一个结构中。 我得到访问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>
...但我没有得到访问的元素将其插入我创建bevor的结构。总是得到一个错误,结构是未定义的....
是否正确的方法来检查是否有任何子元素?
我之前使用过[jsoup](http://jsoup.org/)来对付XML - 它比XPath更容易,并且遍历结构和数组 - 所以可能值得考虑。 –
伟大的建议彼得......我只是不认为这会给他他似乎正在寻找的结果(一个扁平的结构)。 –
它看起来像jsoup是ja javalibrary,但我用coldfusion编程,并尝试在组件内创建该方法。 –