On Fri, Jan 23, 2009 at 1:08 PM, Gunaranjan Chandraraju <
chandrar...@apple.com> wrote:

>
> <record>
>   <coreInfo id="123" , .../>
>   <address street="XYZ1" State="CA" ...type="home" />
>   <address street="XYZ2" state="CA" ... type="Office"/>
>   <address street="XYZ3" state="CA" ....type="Other"/>
> </record>
>
> I have setup my DIH to treat these as entities as below
>
> <dataConfig>
>   <dataSource type="FileDataSource" encoding="UTF-8" />
>   <document>
>     <entity name ="f" processor="FileListEntityProcessor"
>             baseDir="***"
>             fileName=".*xml"
>             rootEntity="false"
>             dataSource="null" >
>        <entity
>           name="record"
>           processor="XPathEntityProcessor"
>           stream="false"
>           forEach="/record"
>           url="${f.fileAbsolutePath}">
>                <field column="ID" xpath="/record/@id" />
>
>                <!-- Address  -->
>                 <entity
>                     name="record_adr"
>                     processor="XPathEntityProcessor"
>                     stream="false"
>                     forEach="/record/address"
>                     url="${f.fileAbsolutePath}">
>                         <field column="address_street"
>  xpath="/record/address/@street" />
>                         <field column="address_state"
> xpath="/record/address//@state" />
>                         <field column="address_type"
>  xpath="/record/address//@type" />
>                </entity>
>           </entity>
>     </entity>
>   </document>
> </dataConfig>
>

I think the only way is to create a dynamic field for each attribute
(street, state etc.). Write a transformer to copy the fields from your data
config to appropriately named dynamic field (e.g. street_1, state_1, etc).
To maintain this counter you will need to get/store it with
Context#getSessionAttribute(name, val, Context.SCOPE_DOC) and
Context#setSessionAttribute(name, val, Context.SCOPE_DOC).

I cant't think of an easier way.
-- 
Regards,
Shalin Shekhar Mangar.

Reply via email to