cancel
Showing results for 
Search instead for 
Did you mean: 

Tab delimited file to nested XML via PI

Former Member
0 Kudos

Dear All,

I have a PI File to Proxy scenario.

I am picking up the tab delimited file in Sender Channel and convert it into nested XML and pass that to proxy.

Now, lets say my source file is like this:

Order no1      order date      customer   <-- Header

line item1       amount                          <--  Items

line item 2      amount    

Order no2      order date      customer

line item1      amount

line item 2     amount

..

...

so on , file can have n number of order and line items

now , I have to create a nexted XML

Order node ( 0 to unbounded)

     - Order Header (1 to 1)

     - Order Item(1 to unbounded)

Order node ( 0 to unbounded)

     - Order Header(1 to 1)

     - Order Item(1 to unbounded)

Is it possible to acheive this using File content conversion ? simple message mapping?

I do not want to use UDF...

Best Regards

.

/

Accepted Solutions (1)

Accepted Solutions (1)

former_member182412
Active Contributor
0 Kudos

Hi Vaibhav,

If you have key field value for your header and item structures then you can read the file like below:

RecordsetStructure : OrderHeader, *, OrderItem, *

Key Field Name : ID

OrderHeader.keyFieldNames: ID, OrderNo, OrderDate, Customer

OrderHeader.keyFieldValue : 10

OrderHeader.fieldSeparator

OrderHeader.endSeparator

OrderItem.keyFieldNames: ID, ItemNo, amount

OrderItem.keyFieldValue : 20

OrderItem.fieldSeparator

OrderItem.endSeparator

Regards,

Praveen.

Former Member
0 Kudos

Hi Praveen,

In the Order Header line , I have one field Type which will be constant 'H' to show it is a header line. It also has OrderNo , both are distinctively in header.

In the OrderItem , I have one field Type which will be constant 'I', this shows that its item line.

My source file looks like this,


H     100010      01.02.2015       56789   <-- Header

I        100$                          <--  Items

I          20$                           <--  Items

H     100099      15.02.2015       789967   <-- Header

I        210$                          <--  Items

I          60$                           <--  Items



So , will the file result in multiple nodes of Header and correspodning sub nodes of Items?

I want the data like this  after conversion :

<Order>

     <H>

     <100099>

     <01.02.2015>

     <56789>

          <item>

                   <I>

                   <100$>

          <item>

          <item>

                   <I>

                   <20$>

           <item>

<Order>


<Order>

     <H>

     <100010>

     <15.02.2015>

     <789967>

         <item>

                   <I>

                   <210$>

          <item>

           <item>

                   <I>

                   <60$>

           <item>

<Order>

Thanks for your help.

Regards

Vaibhav

former_member186851
Active Contributor
0 Kudos

Hello Vaibhav,

Try this

RecordsetStructure : Order, *, Item, *

Key Field Name : ID

Order.fieldNames: give your field Names

Order.keyFieldValue : H

Order.fieldSeparator

Order.endSeparator


Item.keyFieldNames: ID

Item.fieldNames: give your field Names

Item.keyFieldValue : I

Item.fieldSeparator :

Item.endSeparator :

Answers (1)

Answers (1)

former_member186851
Active Contributor
0 Kudos

Hello Vaibhav,

How many levels of substructures you have?

Former Member
0 Kudos

Hi Raghu,

I have only two  Header & Items - both will reoccur as many times as the orders.

Thanks,