XMLファイルのためのライブラリ

XMLファイルを読み込むためのライブラリ - しがないプログラマ の日記
これに機能追加と、XMLファイル書き出し機能を追加しました。読み込み処理をだいたい逆に行えるようにしました。使ってみてください。

http://taoe.jpn.ch:8080/java/ch.jpn.taoe.axlib-0.2.0.jar

現在、読み込み機能については任意の型を読み込むための機能を追加してあります。読み込み方法は独自に追加できるようになっています。書き出しについては、次のバージョンで対応予定です。
以下、実例のソースを。

<?xml version="1.0" encoding="UTF-8"?>
<test>
  <test_data>
    <dateShort>2007/01/01 12:34:56</dateShort>
    <dateLong>Mon Jan 1 03:34:56 +0000 2007</dateLong>
    <decimal>1234567890.123456789</decimal>
    <integer>11223344556677889900</integer>
    <bytebuffer>abcdefg 1</bytebuffer>
  </test_data>
  <test_data>
    <dateShort>2007/12/31 1:2:3</dateShort>
    <dateLong>Sun Dec 30 16:02:03 +0000 2007</dateLong>
    <decimal>1234567890.123456789</decimal>
    <integer>11223344556677889900</integer>
    <bytebuffer>hijklmno 2</bytebuffer>
  </test_data>
</test>

それを読み込むソース

public class Test2 {
	@TagName("test_data")
	private TestData2[] testDatas_;

	public TestData2[] getTestDatas() {
		return testDatas_;
	}
}

import java.math.BigDecimal;
import java.math.BigInteger;
import java.nio.ByteBuffer;
import java.util.Date;

public class TestData2 {
	@DateConverter(format="yyyy/MM/dd HH:mm:ss")
	private Date dateShort_;
	@DateConverter(format="EEE MMM d HH:mm:ss Z yyyy", language="en")
	private Date dateLong_;
	private BigDecimal decimal_;
	private BigInteger integer_;
	@TagName("bytebuffer")
	@AnyDataConverter(converter=ByteBufferConverter.class)
	private ByteBuffer buffer_;

	public Date getShortDate() {
		return dateShort_;
	}
	public Date getLongDate() {
		return dateLong_;
	}
	public BigDecimal getDecimal() {
		return decimal_;
	}
	public BigInteger getInteger() {
		return integer_;
	}
	public ByteBuffer getBuffer() {
		return buffer_;
	}
}


import java.lang.annotation.Annotation;
import java.nio.ByteBuffer;

import ch.jpn.taoe.axlib.annotation.IConverter;

public class ByteBufferConverter implements IConverter {
	public Object convert(String value, Annotation annotation) {
		return ByteBuffer.wrap(value.getBytes());
	}
}


public class Sample {
	private static final String INPUT_FILE_PATH = "読み込むXMLファイルのパス";
	private static final String OUTPUT_FILE_PATH = "書き出すXMLファイルのパス";
	
	public void loadXml() throws Exception {
		XmlLoader loader = new XmlLoader(Test2.class, TestData2.class);
		Test2 root = loader.load(new BufferedInputStream(new FileInputStream(INPUT_FILE_PATH)), Test2.class);

		// rootを使ってXML情報を処理する。

		XmlSaver saver = new XmlSaver(Test2.class, TestData2.class);
		saver.save(test, new BufferedOutputStream(new FileOutputStream(OUTPUT_FILE_PATH)));
	}
}

ソース

以下のアドレスから、Subversionでチェックアウトできるようになっています。
HEAD:http://taoe.jpn.ch:8080/svn/trunk/AnnotationXmlLibrary/
Ver0.2.0:http://taoe.jpn.ch:8080/svn/tags/AnnotationXmlLibrary/release-0.2.0/