<cfset parent = XMLParse(parent)><!--- Is this needed? --->
Нет, это не так. Это даже снижение производительности, потому что вы создаете новый DOM таким образом.
Вы получаете массив узлов XML обратно от XmlSearch()
(зачем еще вы используете <cfloop array...
?). Это означает, что они должны быть эквивалентны:
<!-- new CF8 syntax -->
<cfloop array="#parents#" index="parent">
<cfdump var="#parent#">
</cfloop>
<!-- old syntax -->
<cfloop from="1" to="#ArrayLen(parents)#" index="i">
<cfdump var="#parents[i]#">
</cfloop>
Чтобы контекст ColdFusion учитывался при поиске узла, вам необходимо:
XMLSearch(parent, ".//child")
-------------------^
Если вы запускаете выражение XPath с "//"
, ColdFusion явно ищет весь документ, к которому принадлежит узел, а не только его потомков.
Но если вы заинтересованы в выводе всех <child>
элементов из документа, почему бы не сделать это вместо этого:
<cfset children = XMLSearch(xml, "//child")>