I need help to add extra elements to the produced XML-output-file.

The example below describes the problem:

The Java-domain-classes
================
public class Order {

    private List<OrderItem> orderItems;
    private Long orderId;

    public List getOrderItems() {
        return orderItems;
    }

    public void setOrderItems(ArrayList<OrderItem> orderItems) {
        this.orderItems = orderItems;
    }

    public String getOrderId() {
        return orderId;
    }

    public void setOrderId(Long orderId) {
        this.orderId = orderId;
    }
}

public class OrderItem {

    private Long id;
    private Integer quantity;
    private String description;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public Integer getOrderQuantity() {
        return orderQuantity;
    }

    public void setOrderQuantity(Integer orderQuantity) {
        this.orderQuantity = orderQuantity;
    }

    public String getDescription() {
        return id;
    }

    public void setDescription(String description) {
        this.description = description;
    }
}


The Castor-mapping-file
=======================
<class name="mypackage.Order>
   <map-to xml="Order"/>

   <field name="orderId" type="Long">
      <bind-xml name="OrderId" node="element"/>
   </field>

   </field name="orderItems" class="mypackage.OrderItem" type="ArrayList">
      <bind-xml name="Item" node="element"/>
   </field>

</class>

<class name="mypackage.OrderItem>
   <map-to xml="Item"/>

   <field name="id" type="Long">
      <bind-xml name="Identity" node="element"/>
   </field>

   </field name="quantity" type="integer">
      <bind-xml name="Quantity" node="element"/>
   </field>

   </field name="description" type="String">
      <bind-xml name="Description" node="element"/>
   </field>
</class>


Produced XML-output-file
========================
<?xml version="1.0" ?>
<OrderRoot>
    <Order>
        <OrderId>1</OrderId>
           <Item>
            <Identity>1</Identity>
            <Quantity>2</Quantity>
            <Description>Some description</Description>
        </Item>
        <Item>
            <Identity>2</Identity>
            <Quantity>4</Quantity>
            <Description>Some description</Description>
        </Item>
        <Item>
            <Identity>3</Identity>
            <Quantity>9</Quantity>
            <Description>Some description</Description>
        </Item>
    </Order>
    <Order>
        <OrderId>2</OrderId>
        <Item>
            <Identity>4</Identity>
            <Quantity>50</Quantity>
            <Description>Some description</Description>
        </Item>
        <Item>
            <Identity>5</Identity>
            <Quantity>3</Quantity>
            <Description>Some description</Description>
        </Item>
           <Item>
            <Identity>6</Identity>
            <Quantity>7</Quantity>
            <Description>Some description</Description>
        </Item>
    </Order>
</OrderRoot>


Wanted XML-output-file
======================
<?xml version="1.0" ?>
<OrderRoot>
    <OrderList>    <=WANTED ELEMENT
        <Order>
            <OrderId>1</OrderId>
               <ItemList>    <=WANTED ELEMENT
                   <Item>
                    <Identity>1</Identity>
                    <Quantity>2</Quantity>
                    <Description>Some description</Description>
                </Item>
                <Item>
                    <Identity>2</Identity>
                    <Quantity>4</Quantity>
                    <Description>Some description</Description>
                </Item>
                <Item>
                    <Identity>3</Identity>
                    <Quantity>9</Quantity>
                    <Description>Some description</Description>
                </Item>
            </ItemList>    <=WANTED ELEMENT
        </Order>
        <Order>
            <OrderId>2</OrderId>
               <ItemList>    <=WANTED ELEMENT
                <Item>
                    <Identity>4</Identity>
                    <Quantity>50</Quantity>
                    <Description>Some description</Description>
                </Item>
                <Item>
                    <Identity>5</Identity>
                    <Quantity>3</Quantity>
                    <Description>Some description</Description>
                </Item>
                   <Item>
                    <Identity>6</Identity>
                    <Quantity>7</Quantity>
                    <Description>Some description</Description>
                </Item>
            </ItemList>    <=WANTED ELEMENT
        </Order>
    </OrderList>    <=WANTED ELEMENT
</OrderRoot>


StaxEventItemWriter in Spring to produce the output.
I have tried just about everything in the castor-mapping-file to get these
extra elements to add an extra level to encapsulate the collections but
failed.

Does anyone have a solution for this?

Unfortunately I don't have the choice of manipulating the java-domain
classes since they are used to produce other kind of output too and I don't
want to make an extra XSL-transform just to add the missing elements.

Please help me!

Thanks in advance
Fred

Reply via email to