JAXBの使用説明について
2552 ワード
1、javabeanオブジェクト
Javaコード
これはルートオブジェクトです.ルートオブジェクトが1つの要素しかない場合は@XmlElementWrapperで代用できますが、より良い拡張のために一般的な定義を使用します.この特別な定義は@XmlAccessorTypeのデフォルトアクセスレベルがXmlAccessTypeであることです.PUBLIC_MEMBERです.したがって、javaオブジェクトのprivateメンバー変数にpublic権限のgetter/setterメソッドが設定されている場合は、private変数に@XmlElementと@XmlAttribute注記を使用しないでください.そうしないと、javaオブジェクトによってxmlが生成されたときに同じ属性がjavaクラスに2回存在するエラーが報告されます.同様に,@XmlAccessorTypeのアクセス権限がXmlAccessTypeである場合.NONE、javaのメンバー変数に@XmlElementまたは@XmlAttribute注記が使用されている場合、これらのメンバー変数はxmlファイルにマッピングされます.生成するオブジェクトを自分で制御できます
サブノードここでは何も言うことはありません.2、具体的な実現具体的な実現は簡単です.まずmarshallerを見ます.
最後にxmlを生成
原文住所:http://donald3003a.iteye.com/blog/1701304
Javaコード
@XmlRootElement(name = "beans")
@XmlAccessorType(XmlAccessType.NONE)
public class Beans {
@XmlElement(name = "bean")
private List<Bean> beanList;
public List<Bean> getBeanList() {
return beanList;
}
public void setBeanList(List<Bean> beanList) {
this.beanList = beanList;
}
}
これはルートオブジェクトです.ルートオブジェクトが1つの要素しかない場合は@XmlElementWrapperで代用できますが、より良い拡張のために一般的な定義を使用します.この特別な定義は@XmlAccessorTypeのデフォルトアクセスレベルがXmlAccessTypeであることです.PUBLIC_MEMBERです.したがって、javaオブジェクトのprivateメンバー変数にpublic権限のgetter/setterメソッドが設定されている場合は、private変数に@XmlElementと@XmlAttribute注記を使用しないでください.そうしないと、javaオブジェクトによってxmlが生成されたときに同じ属性がjavaクラスに2回存在するエラーが報告されます.同様に,@XmlAccessorTypeのアクセス権限がXmlAccessTypeである場合.NONE、javaのメンバー変数に@XmlElementまたは@XmlAttribute注記が使用されている場合、これらのメンバー変数はxmlファイルにマッピングされます.生成するオブジェクトを自分で制御できます
@XmlAccessorType(XmlAccessType.NONE)
public class Bean {
@XmlAttribute(name = "id")
private String id;
@XmlAttribute(name = "class")
private String className;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getClassName() {
return className;
}
public void setClassName(String className) {
this.className = className;
}
サブノードここでは何も言うことはありません.2、具体的な実現具体的な実現は簡単です.まずmarshallerを見ます.
public static void marshallerByJaxb(String path, Object object, Class clazz) throws JAXBException, IOException {
JAXBContext jc = JAXBContext.newInstance(clazz);
Marshaller marshaller = jc.createMarshaller();
File file = new File(path);
if (!file.exists()) {
file.createNewFile();
}
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
marshaller.marshal(object, file);
}
Beans beans = new Beans();
List<Bean> list = new ArrayList<Bean>();
Bean beanOne = new Bean();
beanOne.setClassName("testClassOne");
beanOne.setId("testIdOne");
Bean beanTwo = new Bean();
beanTwo.setClassName("testClassTwo");
beanTwo.setId("testIdTwo");
list.add(beanOne);
list.add(beanTwo);
beans.setBeanList(list);
XMLTransformed.marshallerByJaxb("test.xml", beans, Beans.class);
最後にxmlを生成
<beans>
<bean id="testIdOne" class="testClassOne"/>
<bean id="testIdTwo" class="testClassTwo"/>
</beans>
原文住所:http://donald3003a.iteye.com/blog/1701304