inject job

Post Reply
danb
Newbie
Posts: 12
Joined: Tue May 10, 2016 1:01 am

inject job

Post by danb »

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
laurentd
Member
Posts: 137
Joined: Wed Mar 13, 2019 2:06 pm

Re: inject job

Post by laurentd »

Variable XPath Repeater app does the job:
https://www.enfocus.com/en/appstore/pro ... able-xpath
Laurent De Wilde, Solution Architect @ Enfocus
danb
Newbie
Posts: 12
Joined: Tue May 10, 2016 1:01 am

Re: inject job

Post by danb »

that's no fun at all. i'll post here once i've figured it out.
danb
Newbie
Posts: 12
Joined: Tue May 10, 2016 1:01 am

Re: inject job

Post by danb »

//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!
danb
Newbie
Posts: 12
Joined: Tue May 10, 2016 1:01 am

Re: inject job

Post by danb »

now for further refinements how can I get this all done in the script expression?
Sunnyland
Member
Posts: 56
Joined: Mon Aug 19, 2013 1:34 am

Re: inject job

Post by Sunnyland »

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;
}
Post Reply