为了账号安全,请及时绑定邮箱和手机立即绑定

邮递员:如何在 XML 主机响应中解析 CDATA 中的 xml?

邮递员:如何在 XML 主机响应中解析 CDATA 中的 xml?

慕斯王 2023-03-18 16:55:55
我在这里和其他地方阅读了多种资源,但未能解决我的问题。我将 XML 格式的 POST 请求发送到具有由另一个 XML“请求”构成的 CDATA 的主机,并且响应具有相同的结构。从 CDATA 内的嵌套 XML 响应中,我需要提取一个属性('ATTRIBUTE7'),它将成为 Postman 中的一个环境变量。我的理解是,由于 CDATA,VASDataString 的内容被视为不应解析的文本块。我怎样才能超越这个街区?要求:<?xml version="1.0" encoding="UTF-8"?><va:VASMessage xmlns:va="http://subdomain.domain.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://subdomain.domain.com" file:/C:/work/work-idea/somewhere/vas.xsd"  Version="1.1.2">    <va:Header>        <va:HeadElem1>ABC123</va:HeadElem1>        <va:HeadElem2>192</va:HeadElem2>        <va:OriginalTime>2020-05-13T17:21:00</va:OriginalTime>        <va:TransactionCode>70</va:TransactionCode>        <va:ReqProcessing>0</va:ReqProcessing>        <va:MessageType>0</va:MessageType>        <va:MessageDirection>0</va:MessageDirection>    </va:Header>    <va:Body>        <va:VASProviderID>ABC</va:VASProviderID>        <va:VASProductID>PIPPO</va:VASProductID>        <va:VASMessageType>PIPPO_REQUEST</va:VASMessageType>        <va:TransactionTime>2020-05-13T17:21:00</va:TransactionTime>        <va:RetailerID>0101</va:RetailerID>        <va:BranchID>01</va:BranchID>        <va:ShopID>0001</va:ShopID>        <va:POSID>001</va:POSID>        <va:VASDataString><![CDATA[        <HostMessage>            <PIPPO_REQUEST>                <HostRequest>                    <Header Attr1="AB12" Timestamp="{{TimeStamp}}000" />                    <GORDO Operation="000192" />                    <Check>                        <Request Attr2="000100031408" Attr3="8029513427007" Attr4="2500">                            <ElemX Attr5="29" />                        </Request>                    </Check>                </HostRequest>            </PIPPO_REQUEST>        </HostMessage>]]>        </va:VASDataString>    </va:Body></va:VASMessage>
查看完整描述

1 回答

?
慕田峪9158850

TA贡献1794条经验 获得超7个赞

解决方案:


const xml2js = require('xml2js');

xml2js.parseString(pm.response.text(), (err, result) => {

    if (err) {

        console.error(err);

        return;

    }


    const body = result.VASMessage.Body[0].VASDataString[0];

    

    xml2js.parseString(body, (err, result) => {

        if (err) {

            console.error(err);

            return;

        }


        pm.environment.set("ATTRIBUTE7",  JSON.stringify(result.HostMessage.PIPPO_RESPONSE[0].HostResponse[0].$.ATTRIBUTE7));


           console.log(rresult.HostMessage.PIPPO_RESPONSE[0].HostResponse[0].$.ATTRIBUTE7);


    })

});


查看完整回答
反对 回复 2023-03-18
  • 1 回答
  • 0 关注
  • 82 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信