<complexType name="Meta"> <sequence> <element name="name" type="string"/""> <element name="description" type="string"/""> </sequence> </complexType> <complexType name="Store"> <complexContent> <extension base="Meta"> <sequence> <element name="books" type="Book" maxoccurs="unbounded"/""> </sequence> </extension> </complexContent> </complexType> <element name="store" type="Store"/""> <element name="meta" type="Meta"/"">
注意到Store 繼承了Meta, 如果我們有一個Store的對象,但是我們只想Marshal出繼承Meta部分的內容,即希望得到下面這樣XML
<meta> <name>my book store </name> <description> abc </description> </meta>
應該怎麼寫呢?答案其實就在於你怎麼構建JAXBContext
JAXBElement jaxbElement = (JAXBElement)m.invoke(objFactory.newInstance(), store); JAXBContext jc = JAXBContext.newInstance(Meta.class); Marshaller marshaller = jc.createMarshaller(); marshaller.marshal(jaxbElement, os);