betwixtのsample

betwixtって意外とサンプルが少ない。
betwixtでxml→javabeansの変換
まずは、読み込むxml(sample.xml)

<?xml version="1.0" encoding="Shift_Jis"?>
<Person>
<age>25</age>
<friends>
	<friend>
		<name>Tom</name>
		<age>3</age>
	</friend>
	<friend>
		<name>Jim</name>
		<age>3</age>
	</friend>
</friends>
<name>Huck</name>
</Person>

次はjavabeans(Root.java、Friend.java)

package sample;

import java.util.List;
import java.util.Vector;

public class Root {

//	private String name;

	private int age;

	private List friendList = new Vector();

//	public String getName() {
//		return name;
//	}
//
//	public void setName(String name) {
//		this.name = name;
//	}
	
	public int getAge() {
		return age;
	}
	
	public void setAge(int value) {
		this.age = value;
	}
	
	public void addFriend(Friend num) {

		friendList.add(num);
	}

	public Friend[] getFriends() {
		Friend number[] = new Friend[friendList.size()];
		for (int i = 0; i < number.length; i++) {
			number[i] = ((Friend) friendList.get(i));
		}
		return number;
	}
}

package sample;

public class Friend {

	String name;

	String age;

	public String getAge() {
		return age;
	}

	public void setAge(String age) {
		this.age = age;
	}

	public Friend() {

	}

	public Friend(String v) {
		this.name = v;
	}

	public String getName() {
		return name;
	}

	public void setName(String v) {
		this.name = v;
	}

}


最後にパーサー(XMLParser.java)

package sample;

import java.io.File;

import org.apache.commons.betwixt.BindingConfiguration;
import org.apache.commons.betwixt.io.BeanReader;

public class XMLParser {
	public static final void main(String args[]) throws Exception {
		System.out.println("111");

//		String path = "file:c:\\work\\p.xml";
		String path = "C:/java//sample/sample.xml";

		// Configを作成 (idを出力しない) 省いてもいい。
		BindingConfiguration config = new BindingConfiguration();
		config.setMapIDs(false);

		// XMLからJavaBeanを作成
		BeanReader reader = new BeanReader();
		reader.registerBeanClass("Person", Root.class);

//		Root map = (Root) reader.parse(new URL(path));
		Root map = (Root) reader.parse(new File(path));

		System.out.println(map.getAge());
		for (Friend friend : map.getFriends()) {
			System.out.println(friend.getAge());
		}
		
//		// コンソールに出力して内容を確認
//		BeanWriter writer2 = new BeanWriter();
//		writer2
//				.writeXmlDeclaration("<?xml version=\"1.0\" encoding=\"Shift_Jis\"?>");
//		writer2.setBindingConfiguration(config);
//		writer2.write(map);
//		writer2.close();

	}
}