Hi Folks,
I have an XML with a bunch of records with UserID being the unique value in all. And also have an array of UserIDs. Using Groovy I need to retain only those records in the XML which exists in the
userArray = ["885247","1149285"]
I have a groovy which only brings me one record. I am not good at groovy with XML parsers please suggest how to make it work properly
XML
<EmpJob>
<EmpJob>
<managerId>1130351</managerId>
<userId>1158278</userId>
<managerUserNav>
<User>
<defaultFullName>Roy coon</defaultFullName>
</User>
</managerUserNav>
</EmpJob>
<EmpJob>
<managerId>874274</managerId>
<userId>4072314</userId>
<managerUserNav>
<User>
<defaultFullName>Roman Card</defaultFullName>
</User>
</managerUserNav>
</EmpJob>
<EmpJob>
<managerId>73661</managerId>
<userId>42479</userId>
<managerUserNav>
<User>
<defaultFullName>Pawan Kalyan</defaultFullName>
</User>
</managerUserNav>
</EmpJob>
<EmpJob>
<managerId>NO_MANAGER</managerId>
<managerUserNav/>
<userId>1149285</userId>
</EmpJob>
<EmpJob>
<managerId>794895</managerId>
<userId>885189</userId>
<managerUserNav>
<User>
<defaultFullName>BEVERLY Hills</defaultFullName>
</User>
</managerUserNav>
</EmpJob>
<EmpJob>
<managerId>476232</managerId>
<userId>885247</userId>
<managerUserNav>
<User>
<defaultFullName>Bruno Abdulla</defaultFullName>
</User>
</managerUserNav>
</EmpJob>
</EmpJob>
My groovy:
import com.sap.gateway.ip.core.customdev.util.Message;
import java.util.HashMap;
import groovy.xml.XmlUtil;
import groovy.xml.StreamingMarkupBuilder;
import groovy.xml.*;
def Message processData(Message message) {
//Body
def body = message.getBody();
def list=new XmlParser().parse(body);
// def userList = message.getProperty("userIDs");
String[] userArray = ["885247","1149285"];
def newPayload;
userArray.eachWithIndex { id ->
def newNode = list.EmpJob.findAll{ it.userId.text() == id }
newPayload.appendNode(newNode);
}
message.setBody(XmlUtil.serialize(newPayload));
return message;
}
I need the following XML output which I am not able to achieve with the above groovy
<EmpJob>
<EmpJob>
<managerId>NO_MANAGER</managerId>
<managerUserNav/>
<userId>1149285</userId>
</EmpJob>
<EmpJob>
<managerId>476232</managerId>
<userId>885247</userId>
<managerUserNav>
<User>
<defaultFullName>Bruno Abdulla</defaultFullName>
</User>
</managerUserNav>
</EmpJob>
</EmpJob>
Experts Exchange (EE) has become my company's go-to resource to get answers. I've used EE to make decisions, solve problems and even save customers. OutagesIO has been a challenging project and... Keep reading >>
Our community of experts have been thoroughly vetted for their expertise and industry experience.
The Distinguished Expert awards are presented to the top veteran and rookie experts to earn the most points in the top 50 topics.