Mapping – Delimited Flat file to XML – Group wise Looping – Hierarchial

Home Page Forums BizTalk 2004 – BizTalk 2010 Mapping – Delimited Flat file to XML – Group wise Looping – Hierarchial

Viewing 1 reply thread
  • Author
    Posts
    • #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|TEXT2
      I 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?
      Regards
      Aditya
    • #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.

      • #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_3

        VINVD|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_8

         

        then 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?

        • #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.

           

Viewing 1 reply thread
  • The forum ‘BizTalk 2004 – BizTalk 2010’ is closed to new topics and replies.