Read XML with Nested Loops
In this post, I will describe you, how to parse xml having nested loops in Talend. For that I am using below XML as source.
Source XML has list of Items from a retail store, and <item> node repeated for each item. Inside <item> node we have nested nodes for <batter> and <topping> our task is to read all the items with nested loops in their separate flow.
Image of source XML.
Sample XMl file with Nested Loops
First of all you should create metadata of your XML file, but in this post I am using XSD to populate source schema in tXMLMap.
Create new job and add tFileinputXML component and configured it as shown in Image.
Image of tFileInputXMl component.
We have set XPATH Loop to “/items” as this is the root node of XML file. then I have created one column with “Document” data type. see in Image.
tXMLMap and connect with tFileinputXML component using “Main” link.
Open tXMLMap right click on “items” node at right(source) side then select “Import from file”.
provide XSD file it will automatically create all sub nodes. like below image.
Set batter & toppiq as “loop” element by right click and select ” As loop element”
Create two outputs, “batter” and “tappinq” then drag respective columns to “batter & tappinq”
Click on “set loop function” box it will open a window wherein you have add new row and select respective loop path e.g. for “toppinq” i will select “toppinq” loop like wise batter for “batter” output.
Your Final settings looks like below image.
we are ready to get the result add tLogRow components for each of the output and execute the job it show results shown in image.