JAXB如何Marshal父類?

假設我們有這樣的Schema:

<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); 
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章