Я все еще немного идиот xml. Иногда я понимаю, а иногда нет.
У меня есть следующий XML, который в конечном итоге выводится из проанализированного вывода веб-службы .NET. Я поместил его в тег cfxml для целей этого вопроса, но в действительности я анализирую документ xml.
<cfxml variable="local.vXML">
<diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
<NewDataSet xmlns="">
<Table diffgr:id="Table1" msdata:rowOrder="0">
<ResponseCode>3</ResponseCode>
<ResponseText>Incorrect PIN. Please try again</ResponseText>
</Table>
</NewDataSet>
</diffgr:diffgram>
</cfxml>
Я хочу попасть в узлы <ResponseCode>
и <ResponseText>
.
Как бы я это сделал?
Различные усилия, такие как следующие
<cfset Local.xSet = xmlSearch(local.vXML,"NewDataSet") />
<cfset Local.xSet = xmlSearch(local.vXML,"Table") />
<cfset Local.xSet = xmlSearch(local.vXML,"ResponseCode") />
выдает пустой массив
РЕШЕНИЕ
Спасибо за Джейка за его решение CF9. Адаптировано ниже для CF8.
<cfset vResponseCodeXML = XMLSearch(Local.vXML, '//Table[@diffgr:id="Table1"]/ResponseCode')>
<cfset vResponseTextXML = XMLSearch(Local.vXML, '//Table[@diffgr:id="Table1"]/ResponseText')>
<cfset vResponseCode = vResponseCodeXML[1].XmlText>
<cfset vResponseText = vResponseTextXML[1].XmlText>