2012-01-24 7 views

答えて

0

注:私はEclipseLink JAXB (MOXy)リードとJAXB 2 (JSR-222)専門家グループのメンバーです。

クラスに変更を加えて注釈を付けることができない場合は、EclipseLink JAXB(MOXy)の外部マッピングドキュメント拡張機能に興味があります。

oxm.xml以下

は、私は私のブログ(JSON Binding with EclipseLink MOXy - Twitter Example)上の例の一つに指定されているメタデータの外部マッピング・ドキュメントと同等です。

<?xml version="1.0"?> 
<xml-bindings 
    xmlns="http://www.eclipse.org/eclipselink/xsds/persistence/oxm" 
    package-name="blog.json.twitter"> 
    <java-types> 
     <java-type name="SearchResults" xml-accessor-type="FIELD"> 
      <java-attributes> 
       <xml-element java-attribute="completedIn" name="completed_in"/> 
      </java-attributes> 
     </java-type> 
     <java-type name="Result" xml-accessor-type="FIELD"> 
      <java-attributes> 
       <xml-element java-attribute="createdAt" name="created_at"> 
        <xml-java-type-adapter value="blog.json.twitter.DateAdapter"/> 
       </xml-element> 
       <xml-element java-attribute="fromUser" name="from_user"/> 
      </java-attributes> 
     </java-type> 
    </java-types> 
</xml-bindings> 

デモ

ようになり、外部マッピング・ドキュメントでたJAXBContextをブートストラップするためのコード:詳細情報

Map<String, Object> properties = new HashMap<String, Object>(1); 
properties.put(JAXBContextFactory.ECLIPSELINK_OXM_XML_KEY, "blog/json/twitter/oxm.xml"); 
JAXBContext jc = JAXBContext.newInstance(new Class[] {SearchResults.class}, properties); 

0

これは私のために働きました。ここでは、MyClassにはJAXB注釈が注釈されていません。 MyClassは典型的なJava Beanクラスです。

 try { 
     JAXBContext jc = JAXBContext.newInstance(MyClass.class); 
     MyClass cl = new MyClass(); 
     Marshaller m = jc.createMarshaller(); 
     m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); 
     m.marshal(new JAXBElement<MyClass>(new QName("","MyClass"), MyClass.class, cl), System.out); 

    } catch (JAXBException ex) { 
     Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex); 
    } 
関連する問題