Проблема синтаксического анализа ColdFusion XML - PullRequest
1 голос
/ 07 марта 2012

Я все еще немного идиот 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>

1 Ответ

1 голос
/ 07 марта 2012

Попробуйте это:

<cfset respCode = XMLSearch(vXML, '//Table[@diffgr:id="Table1"]/ResponseCode')[1].XmlText>
<cfset respText = XMLSearch(vXML, '//Table[@diffgr:id="Table1"]/ResponseText')[1].XmlText>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...