慕斯王
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);
})
});
添加回答
舉報
0/150
提交
取消