javaxmlstaxbean-io

Mapping both xml element and its attribute using BeanIO


I would like to map the totalAmt tag in below xml file, both its value 100 and it's attribute Ccy.

<?xml version="1.0" encoding="UTF-8"?>
<transaction>
   <id>
       <eId>transactionId001</eId>
   </id>
   <amount>
       <totalAmt Ccy="XXX">100</totalAmt>
   </amount>
</transaction>

By reading BeanIO reference guide and posts here I got the impression that only one of them can be mapped.

So my question is: Can BeanIO handle this tag and could you show me how?

What I have tried and didn't work:

<segment name="amount">
    <field name="totalAmount" xmlName="totalAmt"></field>
    <field name="currency" xmlName="Ccy" xmlType="attribute"></field>
</segment>

Solution

  • Close, but you still need to add the segment element inside the segment tag to tell which field the attribute is belong to.

    example.

    <segment name="amount">
        <field name="totalAmount" xmlName="totalAmt"></field>
        <segment name="totalAmt">
            <field name="type" xmlName="Ccy" xmlType="attribute"></field>
        </segment>
    </segment>