Я ищу способ прокрутки XML-тела и передать каждый элемент xml в структуру. я получил доступ к телу XML следующим образом:получить все элементы тела xml и добавить в struct
<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. Для доступа детей из сложных элементов я использовал этот способ:
<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>
... но я не получить доступ к элементам, чтобы вставить их в структуры, которые я создал бувигер. Всегда получая ошибку, что структура не определена ....
Это правильный способ проверить, есть ли какие-либо дочерние элементы?
Я использовал [jsoup] (http://jsoup.org/) против XML раньше - это намного проще, чем XPath, и ходить через структуры и массивы - так что стоит подумать. –
большое предложение peter ... Я просто не думал, что это даст ему результат (плоскую структуру), который он, казалось, искал. –
похоже, что jsoup является ja javalibrary, но я программирую с помощью coldfusion и пытаюсь создать этот метод внутри компонента. –