not getting data while parsing the XML in script include

String
Kilo Sage

Hi ,

we are getting the below XML

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<_1:GetPriceAndStockResponseMessage
xmlns:_1="hck/1"
xmlns:_1_1="httommon/1">
<_1_1:MessageHeader language="US">
<_1_1:Status>SUCCESS</_1_1:Status>
<_1_1:ResponseMessage>SUCCESS</_1_1:ResponseMessage>
<_1_1:ResponseDetails>
<_1_1:Severity>S</_1_1:Severity>
</_1_1:ResponseDetails>
</_1_1:MessageHeader>
<Orders>
<Order>
<OrderLineItems>
<OrderLineItem>
<SourceSystemOrderLineNumber>1-1A2EAWCX</SourceSystemOrderLineNumber>
<ItemNumber>3766B002</ItemNumber>
<Quantity>1</Quantity>
<ItemPriceInfo>
<CurrencyCode>EUR</CurrencyCode>
<Amount>75</Amount>
<UnitPrice>75</UnitPrice>
<ListPrice>93.75</ListPrice>
</ItemPriceInfo>
</OrderLineItem>
</OrderLineItems>
</Order>
</Orders>
</_1:GetPriceAndStockResponseMessage>
</soapenv:Body>
</soapenv:Envelope>

 

am using below code :

 

if (status == 200) {
                var xmlDoc = new XMLDocument2();
                xmlDoc.parseXML(responseBody);
                var resposeStatus = xmlDoc.getNodeText("//_1_1:Status");
gs.info("price res"+resposeStatus);
                if (resposeStatus == 'SUCCESS') {
 
                 //var parser = new DOMParser();
                    //xmlDoc = parser.parseFromString(responseBody, "text/xml");
 
                    var count = xmlDoc.getElementsByTagName("ItemNumber").length;//ItemNumber
 
 
                    var mrvsArray = [];
 
                    for (var i = 0; i < count; i++) {
 
                        var mrvs1 = {};
 
                        mrvs1.ItemNumber = xmlDoc.getElementsByTagName("ItemNumber")[i].childNodes[0].nodeValue;
 
                        mrvs1.amount = xmlDoc.getElementsByTagName("Amount")[i].childNodes[0].nodeValue;
 
                        mrvsArray.push(mrvs1);
 
                    }
gs.info('price inside'+JSON.stringify(mrvsArray));
                    return JSON.stringify(mrvsArray);
 
                    //
                } else {
                    this.transactionLog('500', requestBody, responseBody, 'Outbound-GetPrice', 'GetPrice');
                    return 500;
                }
            } else {
                this.transactionLog(status, requestBody, responseBody, 'Outbound-GetPrice', 'GetPrice');
                return 500;
            }
 
please guide me 
1 ACCEPTED SOLUTION

Prince Arora
Tera Sage
Tera Sage

@String ,

 

Please try below mentioned code and let me know:

 

var xmlDoc = new XMLDocument2();
xmlDoc.parseXML(text);

var arr = []
var OrderLineItemNode= xmlDoc.getFirstNode("//OrderLineItem");

while(OrderLineItemNode!= null) {
var nodeValues = {};
nodeValues["ItemNumber"] = xmlDoc.getNodeText("//ItemNumber");
nodeValues["Amount"] = xmlDoc.getNodeText("//Amount");
arr.push(nodeValues);
OrderLineItemNode= xmlDoc.getNextNode(OrderLineItemNode);
}

gs.info(JSON.stringify(arr))

 

 

If my answer solved your issue, please mark my answer as Correct & 👍Helpful based on the Impact. 

View solution in original post

5 REPLIES 5

Prince Arora
Tera Sage
Tera Sage

@String ,

 

Please try below mentioned code and let me know:

 

var xmlDoc = new XMLDocument2();
xmlDoc.parseXML(text);

var arr = []
var OrderLineItemNode= xmlDoc.getFirstNode("//OrderLineItem");

while(OrderLineItemNode!= null) {
var nodeValues = {};
nodeValues["ItemNumber"] = xmlDoc.getNodeText("//ItemNumber");
nodeValues["Amount"] = xmlDoc.getNodeText("//Amount");
arr.push(nodeValues);
OrderLineItemNode= xmlDoc.getNextNode(OrderLineItemNode);
}

gs.info(JSON.stringify(arr))

 

 

If my answer solved your issue, please mark my answer as Correct & 👍Helpful based on the Impact.