【问题标题】:Is it possible to parse a SOAP response with a jQuery xml handler?是否可以使用 jQuery xml 处理程序解析 SOAP 响应?
【发布时间】:2011-11-30 16:26:09
【问题描述】:

我有以下 SOAP 响应:

<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
        <getPurseBalanceResponse xmlns="https://secure.card.com/">
            <getPurseBalanceResult>
                <callStatus>
                    <Success>true</Success>
                    <ErrorCode/>
                </callStatus>
                <balance>63.35</balance>
                <pending>30</pending>
                <logoUrl>https://prepa.sqasddsad.com/ytm/images/logos/sq_cashlesscaterpurse3.gif</logoUrl>
                <purseId>23456</purseId>
                <CurrencyCode>GBP</CurrencyCode>
            </getPurseBalanceResult>
        </getPurseBalanceResponse>
    </soap:Body>
</soap:Envelope>

我的问题是,我可以用下面的 jQuery 来解析这个...

var xmlText = $(xml).find("soap:Envelope").
                     find("soap:Body").
                     find("getPurseBalanceResponse").
                     find("getPurseBalanceResult").
                     find("balance").text();
console.log(xmlText);

目前这会返回一个空白字符串 - 获取“余额”的正确 jQuery 调用是什么?

【问题讨论】:

    标签: javascript jquery soap


    【解决方案1】:

    您需要使用双反斜杠 \\ 转义特殊字符(冒号)

    var xmlText = $(xml).find("soap\\:Envelope")
                        .find("soap\\:Body")
                        .find("getPurseBalanceResponse")
                        .find("getPurseBalanceResult")
                        .find("balance").text();
    console.log(xmlText);
    

    这是working fiddle

    【讨论】:

    • 谢谢你,我不得不转义选择器中的特殊字符。
    【解决方案2】:

    简短的回答:是的。 SOAP 是 XML。任何 XML 解析器都可以读取它。 SOAP 提供了一整层使用 XML 作为底层数据交换格式的东西,但是如果您对使用 SOAP 库不感兴趣,那么 XML 库会为您完成。只是为你做更多的工作。

    【讨论】:

    • 这是对的,但如果是这样的话——如果它是纯 XML,为什么我的 xml 解析方法与 jquery 无效?
    • 你没有说它不起作用。您收到的错误消息是什么?
    • 另外,您的示例 xml 文档解析为表单的有效 xml 文档,我可以通过 python 的 xml.dom.minidom 解析器提取您要查找的值,因此它是有效的 XML 并且可以被这样解析。
    • 我在控制台日志中返回一个空白字符串。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-07
    • 1970-01-01
    • 1970-01-01
    • 2021-06-07
    • 2016-09-03
    • 1970-01-01
    相关资源
    最近更新 更多