首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Coldfusion 9解析Soap结果

Coldfusion 9解析Soap结果
EN

Stack Overflow用户
提问于 2013-06-29 01:06:26
回答 1查看 2.1K关注 0票数 0

我正在尝试解析:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><LoginResponse xmlns="http://services.marketernet.com/application"><LoginResult><results><response value="UY+/9dD+Lz7DT3Oq/WG3CVJ/pFW7o6LEFNA4xOSIWr88Dh2RVAgy9qHP1BwpdiYA"/><exceptions></exceptions></results></LoginResult></LoginResponse></soap:Body></soap:Envelope>

到目前为止,我有:

代码语言:javascript
复制
<cfset soapResponse = xmlParse(httpResponse.fileContent) />
<cfset results = xmlSearch(soapResponse,"//*[local-name()='LoginResult' and namespace-uri()='http://services.marketernet.com/application']") />

我需要<response value="UY+/9dD+Lz7DT3Oq/WG3CVJ/pFW7o6LEFNA4xOSIWr88Dh2RVAgy9qHP1BwpdiYA"/>的值

我试着循环,甚至试着做一个深的xml路径,什么也不做。

请帮助我,如果你有问题,请让我知道。

更新1:"ScreenShot“

更新2:“屏幕截图长版”

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-03 02:37:05

我通常只使用xmlSearch(soapResponse,"//*[local-name()='whatever']"),它对我来说工作得很好。根据您在XML中搜索的深度,它可以返回不同的类型。因此,在开发代码时,我总是使用<cfdump>来查看xmlSearch()函数的结果,以了解我正在处理的是什么。

我获得了您共享的SOAP响应,并在ColdFusion 9.0.1上成功测试了以下代码。注意,这里有三个不同的搜索,每个搜索都更深入地研究XML树。我把<cfdump>放在那里,这样你就可以看到每一个都返回了什么。

代码语言:javascript
复制
<cftry>
<cfsavecontent variable="content">
    <?xml version="1.0" encoding="UTF-8" ?>
    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
        <soap:Body>
            <LoginResponse xmlns="http://services.marketernet.com/application">
                <LoginResult>
                    <results>
                        <response value="UY+/9dD+Lz7DT3Oq/WG3CVJ/pFW7o6LEFNA4xOSIWr88Dh2RVAgy9qHP1BwpdiYA"/>
                        <exceptions></exceptions>
                    </results>
                </LoginResult>
            </LoginResponse>
        </soap:Body>
    </soap:Envelope>
</cfsavecontent>
<cfset soapResponse = xmlParse(Trim(content)) />

<html>
    <head><title>Test xmlParse</title></head>
    <body>
        <h3>xmlParse option 1</h3>
        <div>
            <cfset results = xmlSearch(soapResponse,"//*[local-name()='LoginResult']") />
            <cfdump var="#results#" />
            <cfset value = results[1].results.response.XmlAttributes.value />
            <cfdump var="#value#" />
        </div>
        <h3>xmlParse option 2</h3>
        <div>
            <cfset results = xmlSearch(soapResponse,"//*[local-name()='results']") />
            <cfdump var="#results#" />
            <cfset value = results[1].response.XmlAttributes.value />
            <cfdump var="#value#" />
        </div>
        <h3>xmlParse option 3</h3>
        <div>
            <cfset results = xmlSearch(soapResponse,"//*[local-name()='response']") />
            <cfdump var="#results#" />
            <cfset value = results[1].XmlAttributes.value />
            <cfdump var="#value#" />
        </div>
    </body>
</html>
<cfcatch type="any">
    <cfdump var="#cfcatch#" />
</cfcatch>
</cftry>

所有这些选项都会导致将value变量从XML设置为UY+/9dD+Lz7DT3Oq/WG3CVJ/pFW7o6LEFNA4xOSIWr88Dh2RVAgy9qHP1BwpdiYA

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17370064

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档