【问题标题】:ColdFusion XML parsing issueColdFusion XML 解析问题
【发布时间】:2012-03-06 21:58:30
【问题描述】:

我还是个 xml 白痴。有时我明白,有时没有。 我有以下 XML,它最终源自已解析的 .NET Web 服务输出。出于这个问题的目的,我将它包装在 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>

我想访问&lt;ResponseCode&gt;&lt;ResponseText&gt; 节点。

我该怎么做?

各种努力,例如以下

<cfset Local.xSet = xmlSearch(local.vXML,"NewDataSet") />
<cfset Local.xSet = xmlSearch(local.vXML,"Table") />
<cfset Local.xSet = xmlSearch(local.vXML,"ResponseCode") /> 

产生一个空数组

解决方案

感谢 Jake 提供的 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>

【问题讨论】:

    标签: xml coldfusion


    【解决方案1】:

    试试这个:

    <cfset respCode = XMLSearch(vXML, '//Table[@diffgr:id="Table1"]/ResponseCode')[1].XmlText>
    <cfset respText = XMLSearch(vXML, '//Table[@diffgr:id="Table1"]/ResponseText')[1].XmlText>
    

    【讨论】:

    • 我应该注意,这可能只适用于 CF9,因为我直接从函数调用的结果中引用了数组元素。我认为早期版本的 CF 可能会对此感到窒息 - 如果这给您带来麻烦,我可以重做。
    • 是的,准确。 CF8 的方阵索引括号有问题。我根据原始帖子中的编辑对其进行了修改。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-05
    相关资源
    最近更新 更多