2013-04-08 17 views
14

これは、XMLからJavaオブジェクトへの変換に関する多くの重複した質問の1つです。 しかし、私はこのシンプルなものを見つけることができなかったので、このスレッドを開始しました。XMLエンティティとJavaオブジェクトのマッピング

私はxsd [Infact I am it it]とxmlを持っています。私は今、私のJavaクラスが

public class SummaryCart{ 
    private List<SummaryElement> summaryElementList; 
} 
public class SummaryElement { 
    private int order; 
    private String id; 
    private String displayName; 
    private String property; 
    private List<SummaryElement> subElements; 
    private int maxlines; 
    private String type; 
} 

なりマッピング

<tns:SummaryCart xmlns:tns="SummaryCart" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="SummaryCart.xsd"> 
    <SummaryElement type="test"> 
     <order>1</order> 
     <id>A</id> 
     <displayName>A</displayName> 
     <subElements> 
      <order>1</order> 
      <id>Preactivation</id> 
      <displayName>Preactivation</displayName> 
     </subElements> 
     <maxlines>1</maxlines> 
    </SummaryElement> 
</tns:SummaryCart> 

あたりとしてのJava BeanにXMLデータを自動マッピングしたい は、自動マッピングすることができます任意のシンプルなツール/フレームワークがありますXMLからJava Beanへのデータ[属性/要素マッピングをサポートしなければならない]。チュートリアルは良いでしょう。

Btw、Spring-Oxmの利点が取られている場合は、Springフレームワークを使用しています。

+5

使用JAXB。 [Here](http://jaxb.java.net/tutorial/)のチュートリアルです。 –

答えて

28

以下は、JAXB (JSR-222)を使用してオブジェクトをXMLにマップする方法です。

SummaryCart

import java.util.List; 
import javax.xml.bind.annotation.*; 

@XmlRootElement(name="SummaryCart", namespace="SummaryCart") 
@XmlAccessorType(XmlAccessType.FIELD) 
public class SummaryCart{ 

    @XmlElement(name="SummaryElement") 
    private List<SummaryElement> summaryElementList; 

} 

SummaryElement

import java.util.List; 
import javax.xml.bind.annotation.*; 

@XmlAccessorType(XmlAccessType.FIELD) 
public class SummaryElement { 

    private int order; 
    private String id; 
    private String displayName; 
    private String property; 
    private List<SummaryElement> subElements; 
    private int maxlines; 

    @XmlAttribute 
    private String type; 

} 
:実装は、Java SE 6 JAXB始まるJDK/JREに含まれているが( http://static.springsource.org/spring-ws/site/reference/html/oxm.htmlセクション8.5を参照)スプリングにより支持されています

デモ

注釈付き

input.xmlに/出力

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<ns2:SummaryCart xmlns:ns2="SummaryCart" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="SummaryCart.xsd"> 
    <SummaryElement type="test"> 
     <order>1</order> 
     <id>A</id> 
     <displayName>A</displayName> 
     <subElements> 
      <order>1</order> 
      <id>Preactivation</id> 
      <displayName>Preactivation</displayName> 
      <maxlines>0</maxlines> 
     </subElements> 
     <maxlines>1</maxlines> 
    </SummaryElement> 
</ns2:SummaryCart> 
+0

言うまでもなく、私たちはJDK 5を使用しています。はい、レガシーアプリケーションです。 Mavenを使って特定のライブラリをインクルードすることで、Java 5でそれを行うことはできますか? – Reddy

+0

ここには、EclipseLink MOXyをJAXBインプット(私はMOXyリード)として引き出すpom.xmlファイルがあります:https://github.com/bdoughan/blog20110819/blob/master/pom.xml –

1

基本的にはのアンマーシャルにXMLを設定します。 JAXB xjcコマンドをgenerate a Java class from XML Schemaに使用する方法を説明する詳細なチュートリアルです。あなたの便宜のために、xjc pluginも利用可能です。

+1

JAXB実装をJavaクラスから開始するときにも使用できます。http://stackoverflow.com/a/15884122/383861 –

+1

Nota Blaise。 OPの質問に対する私の最初の理解は、彼が出発点としてXSDだけを使用して、何もないJavaファイルを生成したかったということでした。それをもう一度読んで、あなたが正しいと思うのは彼がただ自動的にそれらをマップする方法を必要としているようだ。投票をしてくれてありがとうございました:) – Jops

関連する問題