Home Page › Forums › BizTalk 2004 – BizTalk 2010 › Mapping – Delimited Flat file to XML – Group wise Looping – Hierarchial
- This topic has 4 replies, 1 voice, and was last updated 9 years, 5 months ago by
community-content.
-
AuthorPosts
-
-
July 12, 2010 at 6:01 AM #25197
Hi Gurus
I’m using BizTalk 2006 R2 with Visual Studio 2005 for doing the following mapping.
I have an input delimited flat file:
VINVH|VID|VERF|TOTAL
VINVD|VID|VREF|MOVE|TNO|TALP|TCHK|CCODE1|TEXT1
VINVD|VID|VREF|MOVE|TNO|TALP|TCHK|CCODE2|TEXT2I need the output XML as:<ns0:Root xmlns:ns0=”http://Mapping.XML“>
<VID>VID</VID>
<TOTAL>TOTAL</TOTAL>
<INVOICE>
<VREF>VREF</VREF>
<MOVE>
<MOVENO>MOVE</MOVENO>
<TANK>
<TANKNO>TALPTNOTCHK</TANKNO>
<CHARGE>
<CCODE>CCODE1</CCODE>
<TEXT>TEXT1</TEXT>
</CHARGE>
<CHARGE>
<CCODE>CCODE2</CCODE>
<TEXT>TEXT2</TEXT>
</CHARGE>
</TANK>
</MOVE>
</INVOICE>
</ns0:Root>I tried using maps but couldn’t get the exact combination of functoids. I’m a newbie with customer functoids and custom xslts so needed some help with this. Could someone please advise on this?RegardsAditya -
July 12, 2010 at 3:40 PM #25212
Hi Aditya,
I have built a sample map with source and destination schemas, according to your specs. You can find the zipped file by clicking on my avatar (xman71) on BizTalkGurus.com, look for the file icon named FF_To_XML.zip under My Files section (on the right-hand side), click on it, then hover your mouse over the download link, right-click and choose “Save Target As…” and save it to your local drive. The zipped file contains the following artifacts:
Map_FF_To_XML.btm (BizTalk map)
SourceSchemaFF.xsd (Source Flat File schema used in map)
TargetSchemaXml.xsd (Destination XML schema used in map)
SourceFF.txt (Delimited flat file containing the data in your post, used by map for testing)
TestOutputMap.xml (XML file containing the output of the map, after testing)
Btw, this is all done in BizTalk 2006 R2 version using Visual Studio 2005.
Hope this helps,
Daniel.
-
July 13, 2010 at 7:42 AM #25219
Hi Daniel
There is a catch here. The value ‘1’ that you have mentioned in the ‘Equal’ functoid is not fixed. Eg, if I get an Input Flat file as below:
INPUT:
VINVH|ABC|VREF1
VINVD|ABC|VREF1|MOVENO_1|TNO001|TA01|A|CCODE_1|TEXT_1
VINVD|ABC|VREF1|MOVENO_1|TNO001|TA01|A|CCODE_2|TEXT_2
VINVD|ABC|VREF1|MOVENO_1|TNO002|TA02|B|CCODE_3|TEXT_3VINVD|ABC|VREF1|MOVENO_2|TNO003|TA03|C|CCODE_5|TEXT_5
VINVD|ABC|VREF1|MOVENO_2|TNO003|TA03|C|CCODE_6|TEXT_6
VINVD|ABC|VREF1|MOVENO_1|TNO002|TA02|B|CCODE_4|TEXT_4
VINVD|ABC|VREF1|MOVENO_2|TNO004|TA04|D|CCODE_7|TEXT_7
VINVD|ABC|VREF1|MOVENO_2|TNO004|TA04|D|CCODE_8|TEXT_8then I need the Output as:
<ns0:Root xmlns:ns0=”http://EDIAD_POC_Mapping.EDIAD_XML“>
<VID>ABC</VID>
<INVOICE>
<VREF>VREF1</VREF>
<MOVE>
<MOVENO>MOVENO_1</MOVENO>
<TANK>
<TANKNO>TA01TNO001A</TANKNO>
<CHARGE>
<CCODE>CCODE_1</CCODE>
<TEXT>TEXT_1</TEXT>
</CHARGE>
<CHARGE>
<CCODE>CCODE_2</CCODE>
<TEXT>TEXT_2</TEXT>
</CHARGE>
</TANK>
<TANK>
<TANKNO>TA02TNO002B</TANKNO>
<CHARGE>
<CCODE>CCODE_3</CCODE>
<TEXT>TEXT_3</TEXT>
</CHARGE>
<CHARGE>
<CCODE>CCODE_4</CCODE>
<TEXT>TEXT_4</TEXT>
</CHARGE>
</TANK>
</MOVE>
<MOVE>
<MOVENO>MOVENO_2</MOVENO>
<TANK>
<TANKNO>TA03TNO003C</TANKNO>
<CHARGE>
<CCODE>CCODE_5</CCODE>
<TEXT>TEXT_5</TEXT>
</CHARGE>
<CHARGE>
<CCODE>CCODE_6</CCODE>
<TEXT>TEXT_6</TEXT>
</CHARGE>
</TANK>
<TANK>
<TANKNO>TA04TNO004D</TANKNO>
<CHARGE>
<CCODE>CCODE_7</CCODE>
<TEXT>TEXT_7</TEXT>
</CHARGE>
<CHARGE>
<CCODE>CCODE_8</CCODE>
<TEXT>TEXT_8</TEXT>
</CHARGE>
</TANK>
</MOVE>
</INVOICE>
<INVOICE>
<VREF>VREF2</VREF>
<MOVE>
<MOVENO>MOVENO_3</MOVENO>
<TANK>
<TANKNO>TA05TNO005E</TANKNO>
<CHARGE>
<CCODE>CCODE_9</CCODE>
<TEXT>TEXT_9</TEXT>
</CHARGE>
<CHARGE>
<CCODE>CCODE_10</CCODE>
<TEXT>TEXT_10</TEXT>
</CHARGE>
</TANK>
<TANK>
<TANKNO>TA06TNO006F</TANKNO>
<CHARGE>
<CCODE>CCODE_11</CCODE>
<TEXT>TEXT_11</TEXT>
</CHARGE>
<CHARGE>
<CCODE>CCODE_12</CCODE>
<TEXT>TEXT_12</TEXT>
</CHARGE>
</TANK>
</MOVE>
<MOVE>
<MOVENO>MOVENO_4</MOVENO>
<TANK>
<TANKNO>TA07TNO007G</TANKNO>
<CHARGE>
<CCODE>CCODE_13</CCODE>
<TEXT>TEXT_13</TEXT>
</CHARGE>
<CHARGE>
<CCODE>CCODE_14</CCODE>
<TEXT>TEXT_14</TEXT>
</CHARGE>
</TANK>
<TANK>
<TANKNO>TA08TNO008H</TANKNO>
<CHARGE>
<CCODE>CCODE_15</CCODE>
<TEXT>TEXT_15</TEXT>
</CHARGE>
<CHARGE>
<CCODE>CCODE_16</CCODE>
<TEXT>TEXT_16</TEXT>
</CHARGE>
</TANK>
</MOVE>
</INVOICE>
</ns0:Root>And there can be any number of VINVD files but only one VINVH file. Could you assist with this?
-
July 13, 2010 at 8:20 AM #25223
Hi,
I would suggest that you look into creating a scripting functoid, that uses inline XSLT, in the map to accomplish this more complex mapping. I am not well versed in XSLT, but there are plenty of resources on the internet that can educate you on that subject.
-
July 14, 2010 at 9:38 AM #25237
OK. Thanks for the help. Appreciate it.
-
-
-
-
-
AuthorPosts
- The forum ‘BizTalk 2004 – BizTalk 2010’ is closed to new topics and replies.