Возможно, вы захотите использовать оператор 'содержит' (Алехандро указывает, что это не строгое совпадение) совпадение в XPath. Чтобы выполнить XPath в Coldfusion, используйте функцию xmlSearch для объекта XML. Функция normalize-space () удаляет начальные и конечные пробелы (фиксируя, например, CR в узле 2010 года).
Поскольку XPath напрямую совпадает с узлом года, мы используем «/ ..» для получения родительского узла года. Это если вы хотите работать с любым другим узлом в том же году (например, если был также «количественный» узел или что-то еще).
<cfxml variable="foo">
<root>
<SGA>
<Year>2008</Year>
<Amt>940</Amt>
</SGA>
<SGA>
<Year>2009</Year>
<Amt>980</Amt>
</SGA>
<SGA>
<Year>2010
</Year>
<Amt>1000</Amt>
</SGA>
</root>
</cfxml>
<cfset targetYear=" 2010">
<cfset newAmount=2000>
<cfdump var="#foo#">
<!--- returns an array of matching nodes. --->
<cfset bar = xmlSearch(foo,"/root/SGA/Year[normalize-space()='#trim(targetYear)#']/..")>
<cfdump var="#bar#">
<cfset bar[1].Amt.xmlText = newAmount>
<cfdump var="#foo#">
В реальном приложении вы хотите выполнить итерацию по результатам xmlSearch (в данном случае - bar) в виде массива, поскольку существует возможность получить 0 или более 1 результата.