2017-10-11 18 views
0

一部のサーバーからXMLを受信して​​います。私はそのXMLをjavaオブジェクトにアンマーシャリングし、javaオブジェクトをXMLにマーシャリングする必要があります。JAXBカスタムオブジェクトのマッピングに必要なヘルプ

どうすればいいですか。

以下は私のXML形式です。

<parent> 
    <child> 
     <order> 
      <row no="1"> 
       <AB val="ID">205</AB> 
       <AB val="NAME">JS</AB> 
       <AB val="DETAILS"> 
        <prod no="1"> 
         <AB val="PRODID">205</AB> 
         <AB val="NAME">Prod1</AB> 
        </prod> 
        <prod no="2"> 
         <AB val="PRODID">206</AB> 
         <AB val="NAME">Prod2</AB> 
        </prod> 
       </AB> 
      </row> 
     </order> 
    </child> 
</parent> 
+0

フォーマット用のxsdはありますか? – daniu

+0

申し訳ありませんXSDが利用できません –

答えて

0

あなたは(あなたが例thisを使用するために、すべてのオンラインジェネレータによってXMLからXMLスキーマを生成することができます)、ビルド時にXMLスキーマ(XSD)からJavaクラスを生成するxjc目標にjaxb2-maven-pluginを使用することができます。

xjcをコンソールから使用し、事前にクラスを生成することもできます。クラスはjavaに組み込まれています(<your jdk path>/bin/xjc.exe参照)。

そして、例えば、単に仕事をするために、マーシャラー/アンマーシャラーを使用します。

JAXBContext jaxbContext = JAXBContext.newInstance(YourClazz.class); 
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller(); 
YourClazz yourclazz = (YourClazz) jaxbUnmarshaller.unmarshall(new File("path/to/your/xml")); 

ところで私は、キャッシュJAXBContextインスタンスを示唆Map<Class<?>, JAXBContext>を使用しています。 marshaller/unmarshaller thoをキャッシュしないでください。

+0

生成中 保護されたリスト ここでは、string、intのような要素の型が必要です –

関連する問題