Frank,
You need to use container="false" on your field mapping for the
collection, as such:
<field name="users"
type="User"
collection="collection"
container="false">
</field>
Hope that helps,
--Keith
Ratzlow, Frank (Extern) wrote:
Hi folks,
I have a class structure similar to the following:
====================================
class AddressBook {
/** Collection*<User> */
* Collection* users;
public void setUsers(*Collection* users) {
this.users = users;
}
public* Collection* getUsers() {
return this.users;
}
}
class User {
String firstname;
String lastname;
public void setFirstname(String firstname) {
this.firstname = firstname;
}
public void setLastname(String lastname) {
this.lastname = lastname;
}
public String getFirstname() {
return this.firstname;
}
public String getLastname() {
return this.lastname;
}
}
====================================
and a* castor* mapping file:
====================================
<?xml version="1.0"?>
<!DOCTYPE mapping PUBLIC "-//EXOLAB/*Castor* Object Mapping DTD Version
1.0//EN"
"_http://__*castor*.exolab.org/mappi ng.dtd_
<http://www.google.com/url?sa=D%26q=http://castor.exolab.org/mapping.dtd>">
<mapping>
<class name="AddressBook">
<map-to xml="addressbook"/>
<field name="users"
type="User"
* collection*="*collection*">
</field>
</class>
<class name="User">
<map-to xml="user"/>
<field name="firstname"
type="string">
<bind-xml name="firstname"/>
</field>
<field name="lastname"
type="string">
<bind-xml name="lastname"/>
</field>
</class>
</mapping>
====================================
When i unmarshall from such a xml fragment:
====================================
<addressbook>
<users>
<user>
<firstname>Peter<firstname>
<firstname>Miller<firstname>
<user>
<user>
<firstname>Mary<firstname>
<firstname>Lu<firstname>
<user>
<user>
<firstname>Jonny<firstname>
<firstname>Hot<firstname>
<user>
</users>
<addressbook>
====================================
the resulting object graph is absolutely as expected, means my user
*collection* contains a bunch of users.
But when I marshall it back to XML than I receive:
====================================
<?xml version="1.0" encoding="UTF-8"?>
<addressbook
xmlns:xsi="_http://www.w3.org/2001/XMLSche ma-instance_
<http://www.google.com/url?sa=D%26q=http://www.w3.org/2001/XMLSchema-instance>"
xsi:type="java:AddressBook">
<users xsi:type="java:User">
<firstname>Peter<firstname>
<firstname>Miller<firstname>
</users>
<users xsi:type="java:User">
<firstname>Mary<firstname>
<firstname>Lu<firstname>
</users>
<users xsi:type="java:User">
<firstname>Jonny<firstname>
<firstname>Hot<firstname>
</user>
<addressbook>
====================================
Is there a way to tell the mapping to put objects from collections in
subelements of an enclosing XML-*collection* element?
Just would like to see the output matching the input, with no "xsi"
etc. and appropriate mapping of collections.
I saw the a simila thread
_http://www.mail-archive.com/[email protected]/msg00832.html_ but
it doesn't state how to achieve the enclosing collection root element
within a deep class structure - i think. Neither I can figure out from
this advice how to handle many different collections at different levels
in a object graph.
Any idea
TIA
Frank
P.S. JDK 1.4.1_05,* Castor* 0.9.6
"Coding ain't done till all tests run!"
-------------------------------------------------
If you wish to unsubscribe from this list, please
send an empty message to the following address:
[EMAIL PROTECTED]
-------------------------------------------------