Create Element Error - Any Help?!

Krishana Pal
Kilo Contributor

I have written a script to iterate on members list and generating XML content for automation processing. However, below script logic is failing! Can somebody help me on this please?

Script Details [ This logic will collect members lists & collect few necessary fields as mentioned below! ]

var members = current.variables.mailbox_members_access.toString();

var array = members.split(",");

if(members != ''){

          var members = soap.createElement(members, "ns5:members");

var user = new GlideRecord('sys_user');

user.addQuery('sys_id',"IN",members);

user.query();

user.setLimit(array.length);

while(user.next())

  {

  var memberUserName = '';

  var memberUserID = '';

  var memberManager = '';

  if(user.last_name)

  memberUserName += user.last_name+", "+ user.first_name;

  if(user.u_nt_domain)

  memberUserID += user.u_nt_domain +"\\"+user.u_nt_id;

  if(user.cost_center.manager.last_name)

  memberManager += user.cost_center.manager.last_name+', '+ user.cost_center.manager.first_name;

  var readUser= soap.createElement(gfsReadUsers, "ns13:dlMember");

  var userAttri1= soap.createElement(members, "membersdlMemberuserName",memberUserName);

  var userAttri1= soap.createElement(members, "membersdlMemberuserId",memberUserID);

  var userAttri1= soap.createElement(members, "membersdlMembercostcenter",user.cost_center.account_number);

      var userAttri1= soap.createElement(members, "membersdlMembercountryCode",user.country);

  var userAttri1= soap.createElement(members, "membersdlMemberbusinessUnit",user.u_business_unit);

  var userAttri1= soap.createElement(members, "membersdlMemberccApproverName",memberManager);

}

}

Error Noticed:

Evaluator: org.mozilla.javascript.EcmaError: "soap" is not defined.

  Caused by error in script at line 101

  98: var array = members.split(",");

  99:

  100: if(members != ''){

==> 101: var members = soap.createElement(members, "ns5:members");

  102:

  103: var user = new GlideRecord('sys_user');

  104: user.addQuery('sys_id',"IN",members);

Any help on this will be highly helpful for me!

Thanks,

Raghavendra Guttur

EMC Data Storage Systems

2 REPLIES 2

tony_barratt
ServiceNow Employee
ServiceNow Employee

Hi Raghavendra,



Before calling createElement an xmlDoucument needs to be instantiated


along the lines of


var xmlDoc = new XMLDocument2();



Scoped XMLDocument2 API Reference - ServiceNow Wiki


..


4.6 createElement(String name)


Creates and adds an element node to the current node. The element name is the string passed in as a parameter. The new element has no text child nodes.


Parameters:


  • name - (String) the element name.

Returns:


void

Example:


var xmlString = "<test>" +


    " <one>" +


    " <two att=\"xxx\">abcd1234</two>" +


    " <three boo=\"yah\" att=\"yyy\">1234abcd</three>" +


    " <two>another</two>" +


    " </one>" +


    " <number>1234</number>" +


    "</test>";


var xmlDoc = new XMLDocument2();


xmlDoc.parseXML(xmlString);


xmlDoc.createElement("new2");



Best Regards



Tony


Thanks Tony!


Let me review this one and will provide you an update.