Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/417.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 邮递员:如何在xml主机响应中解析CDATA中的xml?_Javascript_Json_Xml_Cheerio_Postman Testcase - Fatal编程技术网

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

Javascript 邮递员:如何在xml主机响应中解析CDATA中的xml?,javascript,json,xml,cheerio,postman-testcase,Javascript,Json,Xml,Cheerio,Postman Testcase,我在这里和其他地方阅读了多个参考资料,但我未能解决我的问题 我用XML向主机发送一个POST请求,主机的CDATA由另一个XML“请求”组成,并且响应具有相同的结构。 从CDATA中的嵌套XML响应中,我需要提取一个属性('ATTRIBUTE7'),它将成为Postman中的一个环境变量。 我的理解是,由于CDATA,VASDataString的内容被视为不应解析的文本块 我怎样才能超过这个街区 请求: <?xml version="1.0" encoding=&quo

我在这里和其他地方阅读了多个参考资料,但我未能解决我的问题

我用XML向主机发送一个POST请求,主机的CDATA由另一个XML“请求”组成,并且响应具有相同的结构。 从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>
控制台中的输出为:

{VASMessage: {…}}

1. ▶VASMessage: {…}
  1. ▶$: {…}
    1. xmlns: "http://subdomain.domain.com"
  2. ▶Header: {…}
    HeadElem1: "SIA0101010001001"
    HeadElem2: "192"
    OriginalTime: "2020-05-13T17:21:00.000+02:00"
    TransactionCode: "70"
    ReqProcessing: "false"
    MessageType: "false"
    MessageDirection: "true"
    AeviResponseCode: "0"
  3. ▶Body: {…}
    VASProviderID: "ABC"
    VASProductID: "PIPPO"
    VASMessageType: "PIPPO_RESPONSE"
    TransactionTime: "2020-05-13T17:21:00.000+02:00"
    RetailerID: "0101"
    BranchID: "01"
    ShopID: "0001"
    POSID: "001"
    VASDataString: "<HostMessage>
        <PIPPO_RESPONSE>
<HostResponse Attr6="0000" ATTRIBUTE7="00020226551" Versione="2.0">
    <Header Attr8="XYZ" Attr9="0101010001001000192000265" Attr1="CD23" Timestamp="20200921121950064"/>
    
    
    
    
                <Result Attr10="25838" ExDate="20220930" Attr11="000100031408"/>
</HostResponse>


        </PIPPO_RESPONSE>
    </HostMessage>"
{VASMessage:{…}
1.▶消息:{…}
1.▶$: {…}
1.xmlns:“http://subdomain.domain.com"
2.▶标题:{…}
标题1:“SIA01010001001”
标题2:“192”
原始时间:“2020-05-13T17:21:00.000+02:00”
交易代码:“70”
请求处理:“假”
消息类型:“false”
MessageDirection:“正确”
AeviResponseCode:“0”
3.▶正文:{…}
VASProviderID:“ABC”
VASProductID:“PIPPO”
VASMessageType:“PIPPO\U响应”
交易时间:“2020-05-13T17:21:00.000+02:00”
零售ID:“0101”
布兰奇:“01”
ShopID:“0001”
POSID:“001”
VASDataString:“
"
提前感谢您。

解决方案:

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);

    })
});
{VASMessage: {…}}

1. ▶VASMessage: {…}
  1. ▶$: {…}
    1. xmlns: "http://subdomain.domain.com"
  2. ▶Header: {…}
    HeadElem1: "SIA0101010001001"
    HeadElem2: "192"
    OriginalTime: "2020-05-13T17:21:00.000+02:00"
    TransactionCode: "70"
    ReqProcessing: "false"
    MessageType: "false"
    MessageDirection: "true"
    AeviResponseCode: "0"
  3. ▶Body: {…}
    VASProviderID: "ABC"
    VASProductID: "PIPPO"
    VASMessageType: "PIPPO_RESPONSE"
    TransactionTime: "2020-05-13T17:21:00.000+02:00"
    RetailerID: "0101"
    BranchID: "01"
    ShopID: "0001"
    POSID: "001"
    VASDataString: "<HostMessage>
        <PIPPO_RESPONSE>
<HostResponse Attr6="0000" ATTRIBUTE7="00020226551" Versione="2.0">
    <Header Attr8="XYZ" Attr9="0101010001001000192000265" Attr1="CD23" Timestamp="20200921121950064"/>
    
    
    
    
                <Result Attr10="25838" ExDate="20220930" Attr11="000100031408"/>
</HostResponse>


        </PIPPO_RESPONSE>
    </HostMessage>"
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);

    })
});