Hello,

 

I’m trying to unmarshall an input XML file which contains a MessageHolder class. This class has a single class variable Object object.  Basically the MessageHolder can contain an Object of any type. So the XML input file could have a MessageHolder containing a simple String or something very complex like CustomerOrders.

 

<?xml version="1.0"?>

<mapping>

            <class name=" Root">

                        <map-to xml="data"/>

                        <field name="Id" type="java.lang.Integer">

                                    <bind-xml name="cmdId" node="element"/>

                        </field>

                        <field name="msgHolder" type="MessageHolder">

                                    <bind-xml name="get" />

                        </field>

            </class>

 

            <class name= "Get">

                        <field name="object">

                                    <bind-xml name="test" />

                        </field>

            </class>

 

            <class name=”CustomerDetails”>

                        <field name=”billingAddress” type =” BillingAddress” >

                                    <bind-xml name="billAddr"/>

                        </field>

                        <field name=”shippingAddress” type =” ShippingAddress” collection="set">

                                    <bind-xml name="shipAddr"/>

                        </field>

            </class>

 

            <class name=”CustomerOrders”>

                        <field name=”currentOrders” type =”CurrentOrders” collection="set">

                                    <bind-xml name="currOrders"/>

                        </field>

            </class>          

</mapping>

 

I tried to use the method suggested in http://www.codecomments.com/archive413-2006-1-749262.html

 

But the problem is that when I try to unmarshall the data stored in the XML file, the object stored in the MessageHolder object is returned as an instance of AnyNode.

 

ByteArrayInputStream bis = new ByteArrayInputStream(xml.getBytes());

Root root = (Root) unmar.unmarshal(new InputSource(bis));                      

MessageHolder messageHolder = (MessageHolder)root.getMessageHolder;

AnyNode actionObject = (AnyNode)messageHolder.getObject();

 

I would like to unmarshall the object as an instance of the actual class it belongs to eg CustomerOrders or CustomerDetails.

Is there any way to do this ?

 

Thanks for reading my question.

 

Best Regards,

Trish.

 

Patricia Hartnett

Software Engineer
Aircraft Management Technologies
phone: +353 1 806 1000

fax : +353 1 806 1025
e-mail: [EMAIL PROTECTED]
web: www.flightman.com

THE INFORMATION IN THIS E-MAIL IS CONFIDENTIAL AND MAY BE LEGALLY PRIVILEGED.  IT IS INTENDED SOLELY FOR THE ADDRESSEE.  ACCESS TO THIS E-MAIL BY ANYONE ELSE IS UNAUTHORISED.  IF YOU ARE NOT THE INTENDED RECIPIENT, ANY DISCLOSURE, COPYRIGHT, DISTRIBUTION OR ANY ACTION TAKEN OR OMITTED TO BE TAKEN IN RELIANCE ON IT, IS PROHIBITED AND MAY BE UNLAWFUL.

 

Reply via email to