JiBX handles this situation with structures. The structure basics are
explained here:
http://jibx.sourceforge.net/tutorial/binding-structures.html
Information on how to convert different date formats can be found here:
http://jibx.sourceforge.net/details/conversions.html and here:
http://jibx.sourceforge.net/details/format-element.html
By way of example however, this binding file:
<binding value-style="element">
<mapping name="store" class="Store">
<collection field="products" item-type="Product"/>
<collection field="customers" item-type="Customer"/>
</mapping>
<mapping name="product" class="Product">
<value name="name" field="name"/>
<structure field="life">
<value name="manufacture-date" field="startDate"/>
<value name="expiry-date" field="endDate"/>
</structure>
</mapping>
<mapping name="customer" class="Customer">
<value name="name" field="name"/>
<structure field="membership">
<value name="joining-date" field="startDate"/>
<value name="end-date" field="endDate"/>
</structure>
</mapping>
</binding>
Mapped to these classes:
public class Store {
private ArrayList products;
private ArrayList customers;
public String toString() {
return "Products:" + products + "\nCustomers:" + customers;
}
public static void main(String[] argz) throws Exception {
IBindingFactory bfact =
BindingDirectory.getFactory(Store.class);
IUnmarshallingContext uctx = bfact.createUnmarshallingContext();
Store store = (Store) uctx.unmarshalDocument(new
FileInputStream("store.xml"), null);
System.out.println("store:\n" + store);
}
}
public class Product {
private String name;
private Period life;
public String toString() {
return "Product {name: " + name + ", life: " + life + "}";
}
}
public class Customer {
private String name;
private Period membership;
public String toString() {
return "Customer {name: " + name + ", membership: " + membership
+ "}";
}
}
public class Period {
private Date startDate;
private Date endDate;
public String toString(){
return "Period {start: " + startDate + ", end: " + endDate +
"}";
}
}
When fed this xml file:
<store>
<product>
<name>biscuits</name>
<manufacture-date>2005-07-05T01:33:00</manufacture-date>
<expiry-date>2008-12-31T23:59:59</expiry-date>
</product>
<customer>
<name>xxx</name>
<joining-date>2004-09-12T11:28:00</joining-date>
<end-date>2005-09-12T11:27:59</end-date>
</customer>
</store>
Will produce the following output:
store:
Products:[Product {name: biscuits, life: Period {start: Mon Jul 04
21:33:00 EDT 2005, end: Wed Dec 31 18:59:59 EST 2008}}]
Customers:[Customer {name: xxx, membership: Period {start: Sun Sep 12
07:28:00 EDT 2004, end: Mon Sep 12 07:27:59 EDT 2005}}]
Mocky
-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Ruchik
Bhatt
Sent: Wednesday, July 20, 2005 6:10 AM
To: [email protected]
Subject: [jibx-users] Mapping multiple elements to one class and using
it as datatype
Hi,
I have the following classes.
Class Period {
private Date startDate;
privae Date endDate;
}
Class Product {
private String name;
/**
store the manufacture date and expiry date of the
product
*/
private Period life;
}
Class Product {
private String name;
/**
store the manufacture date and expiry date of the
product
*/
private Period membership;
}
The xml structure is
<Strore>
<product>
<name>biscuits</name>
<manufacture-date>01-jul-05</manufacture-date>
<expiry-date>11-jul-05</expiry-date>
</product>
<customer>
<name>xxx</name>
<joining-date>01-jul-05</mdate>
<end-date>01-jul-06</edate>
</customer>
</store>
I want to define binding for the product and customer
such that the dates are mapped to the period.
Please help.
Thanks in advance.
Ruchik
__________________________________
Yahoo! Mail for Mobile
Take Yahoo! Mail with you! Check email on your mobile phone.
http://mobile.yahoo.com/learn/mail
-------------------------------------------------------
SF.Net email is sponsored by: Discover Easy Linux Migration Strategies
from IBM. Find simple to follow Roadmaps, straightforward articles,
informative Webcasts and more! Get everything you need to get up to
speed, fast. http://ads.osdn.com/?ad_id=7477&alloc_id=16492&op=click
_______________________________________________
jibx-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jibx-users
-------------------------------------------------------
SF.Net email is sponsored by: Discover Easy Linux Migration Strategies
from IBM. Find simple to follow Roadmaps, straightforward articles,
informative Webcasts and more! Get everything you need to get up to
speed, fast. http://ads.osdn.com/?ad_id=7477&alloc_id=16492&op=click
_______________________________________________
jibx-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jibx-users