How to get value of attribute between getNode()

free
Kilo Contributor

Hi All,

From my wsdl I have fetched the item with the help of getNodes("//items/item/*") function which provide me details of Item like number, status, errorcode, and errorMessage.

Now I want to update these fields into the table. I am not understanding how to get the value of these fields from getNodes in below code.details is given below,

XML.:-

                <items>

                      <item>

                            <Number>5</Number>

                            <Status>OK|ERROR</Status>

                            <ErrorCode>SAP Error Code</ErrorCode>

                            <ErrorMessage>The error1 message from SAP</ErrorMessage>

                      </item>

                        <item>

                            <Number>6</Number>

                            <Status>OK|ERROR</Status>

                            <ErrorCode>SAP1 Error Code</ErrorCode>

                            <ErrorMessage>The error1 message from SAP</ErrorMessage>

                      </item>

                </items>

CODE

      var req = new XMLDocument(soapRequestXML);

10

      if (status == 'success') {

              var nodes = req.getNodes("//items/item/*");

13

              for (var i = 0; i < nodes.length; i++) {

var nodeName = nodes.item(i).getNodeName();

var nodeValue = nodes.item(i).getTextContent();

gs.log("gtq48ee Details:"+nodeName+'       '+nodeValue);

    }

22

Received Logs,

1 ACCEPTED SOLUTION

Ankur Bawiskar
Tera Patron
Tera Patron

Hi Anshul,



For example purpose I have changed values for the tags so that you can run and check whether all values are coming or not.



<items>


<item>


<Number>5</Number>


<Status>OK|ERROR1</Status>


<ErrorCode>SAP Error Code1</ErrorCode>


<ErrorMessage>The error1 message from SAP</ErrorMessage>


</item>


<item>


<Number>6</Number>


<Status>OK|ERROR2</Status>


<ErrorCode>SAP1 Error Code2</ErrorCode>


<ErrorMessage>The error2 message from SAP</ErrorMessage>


</item>


</items>



var xmlString = '<items><item><Number>5</Number><Status>OK|ERROR1</Status><ErrorCode>SAP Error Code1</ErrorCode><ErrorMessage>The error1 message from SAP</ErrorMessage></item><item><Number>6</Number><Status>OK|ERROR2</Status><ErrorCode>SAP1 Error Code2</ErrorCode><ErrorMessage>The error2 message from SAP</ErrorMessage></item></items>';



var xmldoc = new XMLDocument(xmlString );


var noParamNode = xmldoc.getNodes("//items/*").getLength();



var numberArray = [];


var statusArray = [];


var errorCode = [];


var errorMessageArray = [];



for(var k=1; k<noParamNode+1; k++){



var number = xmldoc.getNodeText("//items/item[" + k + "]" + "/Number");


numberArray.push(number.toString());



var status = xmldoc.getNodeText("//items/item[" + k + "]" + "/Status");


statusArray.push(status.toString());



var error = xmldoc.getNodeText("//items/item[" + k + "]" + "/ErrorCode");


errorCode.push(error.toString());



var ErrorMessage = xmldoc.getNodeText("//items/item[" + k + "]" + "/ErrorMessage");


errorMessageArray.push(ErrorMessage.toString());



}



gs.print('Number array is: '+numberArray); // prints 5,6


gs.print('Status array is: '+statusArray); // prints OK|ERROR1,OK|ERROR2


gs.print('Errorarray is: '+errorCode); // prints SAP Error Code1,SAP1 Error Code2


gs.print('ErrorMessage array is: '+errorMessageArray); // prints The error1 message from SAP,The error2 message from SAP



Try running this in background script and you should see the correct values:



Mark Correct if this solves your issue and also hit Like and Helpful if you find my response worthy based on the impact.


Thanks


Ankur


Regards,
Ankur
✨ Certified Technical Architect  ||  ✨ 9x ServiceNow MVP  ||  ✨ ServiceNow Community Leader

View solution in original post

7 REPLIES 7

Ankur Bawiskar
Tera Patron
Tera Patron

Hi Anshul,



do you want all the values from the Number, Status, ErrorCode, ErrorMessage tags?



Regards


Ankur


Regards,
Ankur
✨ Certified Technical Architect  ||  ✨ 9x ServiceNow MVP  ||  ✨ ServiceNow Community Leader

Ankur Bawiskar
Tera Patron
Tera Patron

Hi Anshul,



For example purpose I have changed values for the tags so that you can run and check whether all values are coming or not.



<items>


<item>


<Number>5</Number>


<Status>OK|ERROR1</Status>


<ErrorCode>SAP Error Code1</ErrorCode>


<ErrorMessage>The error1 message from SAP</ErrorMessage>


</item>


<item>


<Number>6</Number>


<Status>OK|ERROR2</Status>


<ErrorCode>SAP1 Error Code2</ErrorCode>


<ErrorMessage>The error2 message from SAP</ErrorMessage>


</item>


</items>



var xmlString = '<items><item><Number>5</Number><Status>OK|ERROR1</Status><ErrorCode>SAP Error Code1</ErrorCode><ErrorMessage>The error1 message from SAP</ErrorMessage></item><item><Number>6</Number><Status>OK|ERROR2</Status><ErrorCode>SAP1 Error Code2</ErrorCode><ErrorMessage>The error2 message from SAP</ErrorMessage></item></items>';



var xmldoc = new XMLDocument(xmlString );


var noParamNode = xmldoc.getNodes("//items/*").getLength();



var numberArray = [];


var statusArray = [];


var errorCode = [];


var errorMessageArray = [];



for(var k=1; k<noParamNode+1; k++){



var number = xmldoc.getNodeText("//items/item[" + k + "]" + "/Number");


numberArray.push(number.toString());



var status = xmldoc.getNodeText("//items/item[" + k + "]" + "/Status");


statusArray.push(status.toString());



var error = xmldoc.getNodeText("//items/item[" + k + "]" + "/ErrorCode");


errorCode.push(error.toString());



var ErrorMessage = xmldoc.getNodeText("//items/item[" + k + "]" + "/ErrorMessage");


errorMessageArray.push(ErrorMessage.toString());



}



gs.print('Number array is: '+numberArray); // prints 5,6


gs.print('Status array is: '+statusArray); // prints OK|ERROR1,OK|ERROR2


gs.print('Errorarray is: '+errorCode); // prints SAP Error Code1,SAP1 Error Code2


gs.print('ErrorMessage array is: '+errorMessageArray); // prints The error1 message from SAP,The error2 message from SAP



Try running this in background script and you should see the correct values:



Mark Correct if this solves your issue and also hit Like and Helpful if you find my response worthy based on the impact.


Thanks


Ankur


Regards,
Ankur
✨ Certified Technical Architect  ||  ✨ 9x ServiceNow MVP  ||  ✨ ServiceNow Community Leader

Thank you Ankur. It is wokring fine.


Hi Anshul,



Can you mark it as correct since this was solved.



Regards


Ankur


Regards,
Ankur
✨ Certified Technical Architect  ||  ✨ 9x ServiceNow MVP  ||  ✨ ServiceNow Community Leader