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()