2011-09-15 2 views
1

http://blog.adamsbros.org/2010/02/07/jaxb-example-code/に記載されたチュートリアルに続いて、XMLElementsの可変数を持つことが可能かどうかを知りたいと思います。 例えば、私のクラスは次のようになります。可変数の@XMLElementsを持つJAXB

<Teacher TeacherName="Mary"> 
<StudentName>John</StudentName> 
<StudentName>Paul</StudentName> 
</Teacher> 

は、JAXBでの要素の可変数を持つことが、このことは可能ですかそこが優れている:

@XmlRootElement(name = "employee") 
public class Teacher { 

@XmlAttribute 
String TeacherName; 

@XmlElement 
List<String> StudentNames = new ArrayList<String>(); 
} 

私はJAXBのようなXMLを作成したいですこのようなことを処理する方法は?どんな助けもありがとうございます。

ありがとうございます。

+2

のために、それは本当に問題ですか? Ansはあなたが望むほど多くのことをすることができます。あなたの懸念は何ですか? – Shahzeb

+0

ありがとうShahzeb。リストと一緒に自動的に動作します。私は複数の要素を得るために特別な処理をする必要があると思った。 – madu

答えて

1

以下では、ご希望のXMLドキュメントに一致するようにご質問で提供されたメタデータを変更しました。

@XmlRootElement(name = "employee") 
@XmlAccessorType(XmlAccessType.FIELD) 
public class Teacher { 

    @XmlAttribute(name="TeacherName") 
    String TeacherName; 

    @XmlElement(name="StudentName") 
    List<String> StudentNames = new ArrayList<String>(); 

} 

詳細情報

+0

ブレイズありがとう。私はそれのハングアップを取得し始めている。しかし、それが内部でどのように動作するのか少し混乱します。つまり、iteratorとtoString()が必要ですか?これは、ArrayListをMapに置き換えたときにこれが機能しなかったためです。 Mapがインターフェイスであり、JAXBがインターフェイスをサポートしていないことを訴えました。しかし、ArrayListもインターフェイスです。 – madu

+1

@madu - 'ArrayList'はインターフェース' List'を実装するクラスです。 'Map'はインタフェースであり、' HashMap'クラスによって実装されています – Amanpreet

+0

@Amanpreetありがとう。今すぐ入手してください。しかしJAXBの要件は何ですか?私はそれが文字列のために働くことは知っていますが、一般的に、リスト内のものは、toString()を実装する必要がありますか?ありがとうございます – madu

1

あなたがサイズを取得することを心配している場合は、我々はクラスのsize()メソッドを持っています。

+0

ありがとうAmanpreet。しかし、サイズは私が探していたものではありません。私は同じXMLタグですべての要素を取得したかったのです。 – madu

関連する問題