users@jaxb.java.net

How to Marshall the parent element

From: James Mao <james.mao_at_iona.com>
Date: Tue, 31 Jul 2007 19:08:07 +0800

Hi,

I have a schema like this,

    <xs:complexType name="Meta">
        <xs:sequence>
            <xs:element name="name" type="xs:string"/>
            <xs:element name="description" type="xs:string"/>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="Store">
        <xs:complexContent>
            <xs:extension base="Meta">
                <xs:sequence>
                    <xs:element name="books" type="Book" minOccurs="1"
maxOccurs="unbounded"/>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>

    <xs:element name="store" type="Store"/>
    <xs:element name="meta" type="Meta"/>



Given the Store object, Is it possible for marshaller to generate the
xml which looks like this

<meta>
 <name>my book store>
 <description> abc </description>
</meta>
   

I have a utility class, i supposed it to generate the meta part, but in
stead it generate the whole Store xml for me.


            Class objFactory = Class.forName(packageName +
".ObjectFactory");
            Method m = objFactory.getMethod("createMeta", Meta.class);

            JAXBElement jaxbElement =
(JAXBElement)m.invoke(objFactory.newInstance(), store);

            JAXBContext jc = JAXBContext.newInstance(packageName);
            Marshaller marshaller = jc.createMarshaller();
            marshaller.marshal(jaxbElement, os);


I'm using jaxbImpl 2.0.3

Thanks,
James