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