[jdom-interest] converting Elements to objects

Anton Stoyanov anton.stoyanov at gmail.com
Thu Feb 17 12:16:23 PST 2005


Hi, 

thanks for the answers :) it's my first post in this list and i'm
really happy to get such instant expert opinions :)


you are right I don't want to change the customer object in any way
(extending element or taking in an element)

Jason, you say makeCustomer would read out the fields..... can I make
this generic - so that it's not makeCustomer but "makeObject(Element
e)" which will just take in an element and automatically recognize if
it's a customer or saleitem or whatever object and make old the
children into strings, say, in that object.


thanks alot
anton


On Thu, 17 Feb 2005 14:44:36 -0500, Jason Winnebeck <gillius at gillius.org> wrote:
> Anton Stoyanov wrote:
> > with JDOM I can get a java.util.List of elements, but how can I
> > transform them into customer objects ?
> 
> As far as I know, there is not a JDOM method or another automatic method to
> do this.
> 
> The way I resolve this is by making a constructor for Customer that takes an
> Element pointing to a customer tag, then reads the children of that tag.
> 
> Element e = parent.getChild( "customer" );
> Customer c = new Customer( e );
> 
> If you want to separate the JDOM/XML parsing away from the design of the
> Customer class (there are various reasons you may object to putting JDOM
> code into the Customer class, espically if you did not write the Customer
> class), you could use a sort of factory.
> 
> If your XML is pretty structured and you aren't sure what you are going to
> get out of it you could use a generic factory that returned an object
> implementing an interface, and the specific type is dependent on the tag
> passed in.  Or, if you do know what you are getting, then you could do
> something like:
> 
> Element e = parent.getChild( "customer" );
> Customer c = XMLObjectFactory.makeCustomer( e );
> 
> makeCustomer would presumably read out the fields and call a verbose form of
> constructor for Customer to construct an appropriate new Customer object.
> 
> Jason Winnebeck
> _______________________________________________
> To control your jdom-interest membership:
> http://www.jdom.org/mailman/options/jdom-interest/youraddr@yourhost.com
> 


-- 
----------------------
Anton Stoyanov


More information about the jdom-interest mailing list