BetwixtはJavaBeansを簡単にXMLに書き出すためのAPIです。また読み込むことも可能です。(厳密にはCommons Digesterを使うのだけど)
Primitive(intとかString)だけなら、とにかく非常に簡単に始められます。
XMLスキーマやDTDがないXMLを読み書きするならBetwixtがいい選択になると思います。
ここでは ver0.6を元に説明します。
【公式サイト】
準備
以下のパッケージ(API)をダウンロードしてjarファイルをパスに追加する必要があります。
ダウンロードはから行えます。
バージョンはその時点で一番近いものを、ファイル形式はzipでもtar.gzでも同じです。
■Commons BetWixt 0.6
commons-betwixt-0.6.jar
■BeanUtils 1.7.0
commons-beanutils.jar
■Commons Collections 2.1.1
commons-collections-2.1.1.jar
■Commons Digester 1.6
commons-digester.jar
■Commons Logging 1.0.4
commons-logging.jar
サンプル
実行すると以下のようにファイル c:\tmp\p.xml と画面に以下のように出力されます。
Tom
Jim
Java Code
配列を扱うときは、addとgetを用いますが、getの場合は、後にsをつけるとか、Listをつけるなどした方がすっきりします。
public void addFrend(Frend num);
public Frend[] getFrends();public Frend[] getFrendList();
■test.Person.java/*
* Created on 2004/10/05
* Author aki@
* License Apache2.0 or Common Public License
*/
package test;
import java.io.File;
import java.io.FileWriter;
import java.util.List;
import java.util.Vector;
import org.apache.commons.betwixt.BindingConfiguration;
import org.apache.commons.betwixt.io.BeanReader;
import org.apache.commons.betwixt.io.BeanWriter;
public class Person {
public static final void main(String args[]) throws Exception{
String path="c:\\tmp\\p.xml";
//Configを作成 (idを出力しない) 省いてもいい。
BindingConfiguration config=new BindingConfiguration();
config.setMapIDs(false);
BeanWriter writer = new BeanWriter(new FileWriter(path));
writer.setBindingConfiguration(config);
writer.writeXmlDeclaration("");
//JavaBeanの値を設定
Person person=new Person();
person.setName("Huck");
person.addFrend(new Frend("Tom"));
person.addFrend(new Frend("Jim"));
//書き出し
writer.write(person);
writer.close();
//XMLからJavaBeanを作成
BeanReader reader=new BeanReader();
reader.registerBeanClass(Person.class);
Person map=(Person)reader.parse(new File(path));
//コンソールに出力して内容を確認
BeanWriter writer2 = new BeanWriter();
writer2.writeXmlDeclaration("");
writer2.setBindingConfiguration(config);
writer2.write(map);
writer2.close();
}
public Person(){
frendList=new Vector();
}
public int getAge() {
return age;
}
public void setAge(int value) {
this.age = value;
}
private String name;
private int age=25;
List frendList;
public void addFrend(Frend num){
frendList.add(num);
}
public Frend[] getFriends(){
Friend number[]=new Friend[friendList.size()];
for (int i = 0; i < number.length; i++) {
number[i]=((Friend)friendList.get(i));
}
return number;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
■test.Friend.javapackage test;
/*
* Created on 2004/10/05
* Author aki@
* License Apache2.0 or Common Public License
*/
/**
*
*
*/
public class Friend {
String name;
public Friend(){
}
public Friend(String v){
this.name=v;
}
public String getName() {
return name;
}
public void setName(String v) {
this.name = v;
}
}
FAQXML宣言はどうやって書くのかwriter.writeXmlDeclaration("");
出力時のid属性はどうやって消すの?BindingConfiguration config=new BindingConfiguration();
config.setMapIDs(false);
BeanWriter writer = new BeanWriter(fw);
writer.setBindingConfiguration(config);
関連