Given:
var XMLData = job.getDataset("Xml");
var itemToInject = 2
var doIT = XMLData.evalToString("/Documents/Document[" + itemToInject + "]/filePath");
doIT;
This works and injects document 2 of a 3 document xml.
My question is how do I iterate through the xml to get all three documents injected?
thanks
inject job
Re: inject job
Variable XPath Repeater app does the job:
https://www.enfocus.com/en/appstore/pro ... able-xpath
https://www.enfocus.com/en/appstore/pro ... able-xpath
Laurent De Wilde, Solution Architect @ Enfocus
Re: inject job
that's no fun at all. i'll post here once i've figured it out.
Re: inject job
//set private data
loop=[Metadata.Integer:Path="count(/Documents/Document)",Dataset="Xml",Model="XML"]
//then repeat loop calculation
loop=[Switch.Calculation:Expression="[Job.PrivateData:Key="loop"]-1"]
//then inject job, job path script expression
var XMLData = job.getDataset("Xml");
var x = job.getPrivateData("loop");
var externalID = XMLData.evalToString("/Documents/Document[" + x + "]/filePath");
job.log(2, externalID);
externalID;
//BOOM!
loop=[Metadata.Integer:Path="count(/Documents/Document)",Dataset="Xml",Model="XML"]
//then repeat loop calculation
loop=[Switch.Calculation:Expression="[Job.PrivateData:Key="loop"]-1"]
//then inject job, job path script expression
var XMLData = job.getDataset("Xml");
var x = job.getPrivateData("loop");
var externalID = XMLData.evalToString("/Documents/Document[" + x + "]/filePath");
job.log(2, externalID);
externalID;
//BOOM!
Re: inject job
now for further refinements how can I get this all done in the script expression?
Re: inject job
Can you do it with a loop?
If I have understood what you are trying to do correctly.
This could work for you.
var dataset = job.getDataset("Xml");
var xml = new Document(dataset.getPath());
var doc = xml.evalToNodes("/Documents/Document");
for(var x=1; x<doc.length+1;x++){
var externalID = XMLData.evalToString("/Documents/Document[" + x + "]/filePath");
job.log(2, externalID);
externalID;
}
If I have understood what you are trying to do correctly.
This could work for you.
var dataset = job.getDataset("Xml");
var xml = new Document(dataset.getPath());
var doc = xml.evalToNodes("/Documents/Document");
for(var x=1; x<doc.length+1;x++){
var externalID = XMLData.evalToString("/Documents/Document[" + x + "]/filePath");
job.log(2, externalID);
externalID;
}