The CreatorCon Call for Content is officially open! Get started here.

Unable to get the values from Parser in Script Step to the outputs of the Data Stream action.

OT
Tera Expert

my data stream action is setup with Rest as a request, No pagination, for the splitter step the source Format is set to "XML" and Item Path is set to "/DME/RECORDS/RECORD"

I am Unable to get the values from Parser in Script Step to the outputs of the Data Stream action., I tried different my output is always empty. when logging the same field i see data in the log.

Please help!!!

 

This is the code i have for the script Parser:

 

 

 

(function parse(inputs, outputs) {


 var xmlDoc = new XMLDocument2();
 xmlDoc.parseXML(inputs.sourceItem);
 var root = xmlDoc.getDocumentElement();
 var rootNode = xmlDoc.getDocumentElement();
 // gs.info("vendor_group:--"+xmlDoc.getNodeText('//COL'));
 // gs.info("vendor_id:--"+xmlDoc.getNodeText('//COL[1]'));
 // gs.info("vendor_class:--"+xmlDoc.getNodeText('//COL[2]'));

 //gs.info(rootNode.getTextContent());

 if (root.getNodeName() != '//RECORDS') {
     outputs.state = 'SKIP';
     return;
}


 outputs.targetObject.vendor_group = xmlDoc.getNodeText('//COL');
 outputs.targetObject.vendor_class = xmlDoc.getNodeText('//COL[2]');
 outputs.targetObject.vendor_id = xmlDoc.getNodeText('//COL[1]');

  

})(inputs, outputs);

 

 

 

the response from the rest API is here:

 

 

 

<?xml version="1.0" encoding="ISO-8859-1"?><DME>
<BASE>
<DMEBASE executable="/servlet/Router/Data/Erp">
<![CDATA[PROD=TEST&FIELD=VENDOR-GROUP%3BVEN-CLASS%3BVENDOR&XIDA=false&XKEYS=false&XNEXT=false&XCOUNT=false&FILE=APVENMAST&XRELS=false&XCOLS=true&Key=d686c99f84552225417afbf2b7bdc944&OUT=XML]]></DMEBASE>
</BASE>
<KEYS>
<KEY name="Vendor-group" type="ALPHA" size="4" />
<KEY name="Vendor" type="ALPHARIGHT" size="9" />
</KEYS>
<COLUMNS>
<COLUMN header="Vendor_Group" dspname="Vendor Group" dbname="VENDOR-GROUP" type="ALPHA" size="4" />
<COLUMN header="Ven_Class" dspname="Vendor Class" dbname="VEN-CLASS" type="ALPHA" size="3" />
<COLUMN header="Vendor" dspname="Vendor" dbname="VENDOR" type="ALPHARIGHT" size="9" />
</COLUMNS>
<RECORDS count="25">
<RECORD>
<COLS>
<COL>
<![CDATA[1000]]>
</COL>
<COL>
<![CDATA[STD]]>
</COL>
<COL>
<![CDATA[    10001]]>
</COL>
</COLS>
</RECORD>
<RECORD>
<COLS>
<COL>
<![CDATA[1000]]>
</COL>
<COL>
<![CDATA[STD]]>
</COL>
<COL>
<![CDATA[    10002]]>
</COL>
</COLS>
</RECORD>
<RECORD>
<COLS>
<COL>
<![CDATA[1000]]>
</COL>
<COL>
<![CDATA[STD]]>
</COL>
<COL>
<![CDATA[    10003]]>
</COL>
</COLS>
</RECORD>
<RECORD>
<COLS>
<COL>
<![CDATA[1000]]>
</COL>
<COL>
<![CDATA[STD]]>
</COL>
<COL>
<![CDATA[    10006]]>
</COL>
</COLS>
</RECORD>
<RECORD>
<COLS>
<COL>
<![CDATA[1000]]>
</COL>
<COL>
<![CDATA[STD]]>
</COL>
<COL>
<![CDATA[    10011]]>
</COL>
</COLS>
</RECORD>
<RECORD>
<COLS>
<COL>
<![CDATA[1000]]>
</COL>
<COL>
<![CDATA[INV]]>
</COL>
<COL>
<![CDATA[    10012]]>
</COL>
</COLS>
</RECORD>
<RECORD>
<COLS>
<COL>
<![CDATA[1000]]>
</COL>
<COL>
<![CDATA[STD]]>
</COL>
<COL>
<![CDATA[    10014]]>
</COL>
</COLS>
</RECORD>
<RECORD>
<COLS>
<COL>
<![CDATA[1000]]>
</COL>
<COL>
<![CDATA[INV]]>
</COL>
<COL>
<![CDATA[    10015]]>
</COL>
</COLS>
</RECORD>
<RECORD>
<COLS>
<COL>
<![CDATA[1000]]>
</COL>
<COL>
<![CDATA[STD]]>
</COL>
<COL>
<![CDATA[    10016]]>
</COL>
</COLS>
</RECORD>
<RECORD>
<COLS>
<COL>
<![CDATA[1000]]>
</COL>
<COL>
<![CDATA[STD]]>
</COL>
<COL>
<![CDATA[    10017]]>
</COL>
</COLS>
</RECORD>
<RECORD>
<COLS>
<COL>
<![CDATA[1000]]>
</COL>
<COL>
<![CDATA[STD]]>
</COL>
<COL>
<![CDATA[    10018]]>
</COL>
</COLS>
</RECORD>
<RECORD>
<COLS>
<COL>
<![CDATA[1000]]>
</COL>
<COL>
<![CDATA[STD]]>
</COL>
<COL>
<![CDATA[    10020]]>
</COL>
</COLS>
</RECORD>
<RECORD>
<COLS>
<COL>
<![CDATA[1000]]>
</COL>
<COL>
<![CDATA[INV]]>
</COL>
<COL>
<![CDATA[    10021]]>
</COL>
</COLS>
</RECORD>
<RECORD>
<COLS>
<COL>
<![CDATA[1000]]>
</COL>
<COL>
<![CDATA[STD]]>
</COL>
<COL>
<![CDATA[    10022]]>
</COL>
</COLS>
</RECORD>
<RECORD>
<COLS>
<COL>
<![CDATA[1000]]>
</COL>
<COL>
<![CDATA[STD]]>
</COL>
<COL>
<![CDATA[    10027]]>
</COL>
</COLS>
</RECORD>
<RECORD>
<COLS>
<COL>
<![CDATA[1000]]>
</COL>
<COL>
<![CDATA[STD]]>
</COL>
<COL>
<![CDATA[    10029]]>
</COL>
</COLS>
</RECORD>
<RECORD>
<COLS>
<COL>
<![CDATA[1000]]>
</COL>
<COL>
<![CDATA[STD]]>
</COL>
<COL>
<![CDATA[    10030]]>
</COL>
</COLS>
</RECORD>
<RECORD>
<COLS>
<COL>
<![CDATA[1000]]>
</COL>
<COL>
<![CDATA[STD]]>
</COL>
<COL>
<![CDATA[    10035]]>
</COL>
</COLS>
</RECORD>
<RECORD>
<COLS>
<COL>
<![CDATA[1000]]>
</COL>
<COL>
<![CDATA[STD]]>
</COL>
<COL>
<![CDATA[    10036]]>
</COL>
</COLS>
</RECORD>
<RECORD>
<COLS>
<COL>
<![CDATA[1000]]>
</COL>
<COL>
<![CDATA[STD]]>
</COL>
<COL>
<![CDATA[    10037]]>
</COL>
</COLS>
</RECORD>
<RECORD>
<COLS>
<COL>
<![CDATA[1000]]>
</COL>
<COL>
<![CDATA[STD]]>
</COL>
<COL>
<![CDATA[    10038]]>
</COL>
</COLS>
</RECORD>
<RECORD>
<COLS>
<COL>
<![CDATA[1000]]>
</COL>
<COL>
<![CDATA[INV]]>
</COL>
<COL>
<![CDATA[    10039]]>
</COL>
</COLS>
</RECORD>
<RECORD>
<COLS>
<COL>
<![CDATA[1000]]>
</COL>
<COL>
<![CDATA[STD]]>
</COL>
<COL>
<![CDATA[    10040]]>
</COL>
</COLS>
</RECORD>
<RECORD>
<COLS>
<COL>
<![CDATA[1000]]>
</COL>
<COL>
<![CDATA[STD]]>
</COL>
<COL>
<![CDATA[    10041]]>
</COL>
</COLS>
</RECORD>
<RECORD>
<COLS>
<COL>
<![CDATA[1000]]>
</COL>
<COL>
<![CDATA[STD]]>
</COL>
<COL>
<![CDATA[    10042]]>
</COL>
</COLS>
</RECORD>
</RECORDS>
<RELOAD>
<![CDATA[BEGIN=1000=++++10001&]]>
</RELOAD>
<NEXTCALL>
<![CDATA[BEGIN=1000=++++10043&]]>
</NEXTCALL>
</DME>

 

 

 

1 ACCEPTED SOLUTION

OT
Tera Expert

I found the issue here the new updated script parser:

(function parse(inputs, outputs) {


 var xmlDoc = new XMLDocument2();
 xmlDoc.parseXML(inputs.sourceItem);
 var root = xmlDoc.getDocumentElement();

 if (root.getNodeName() != 'RECORD') {
     outputs.state = 'SKIP';
     return;
}

 outputs.targetObject.vendor_vname = xmlDoc.getNodeText('//COL');
 outputs.targetObject.vendor = xmlDoc.getNodeText('//COL[2]');
 outputs.targetObject.vendor_class = xmlDoc.getNodeText('//COL[3]');
 


  

})(inputs, outputs);

 

I needed to check name not a path in  

root.etNodeName()

View solution in original post

1 REPLY 1

OT
Tera Expert

I found the issue here the new updated script parser:

(function parse(inputs, outputs) {


 var xmlDoc = new XMLDocument2();
 xmlDoc.parseXML(inputs.sourceItem);
 var root = xmlDoc.getDocumentElement();

 if (root.getNodeName() != 'RECORD') {
     outputs.state = 'SKIP';
     return;
}

 outputs.targetObject.vendor_vname = xmlDoc.getNodeText('//COL');
 outputs.targetObject.vendor = xmlDoc.getNodeText('//COL[2]');
 outputs.targetObject.vendor_class = xmlDoc.getNodeText('//COL[3]');
 


  

})(inputs, outputs);

 

I needed to check name not a path in  

root.etNodeName()