設定ファイルにXMLを使って、Javaで扱う場合、
XMLを読むだけならDigester、XMLの書式/スキーマが与えられている or ちゃんと用意する必要があるのならRelaxerなどのXMLバインディングツールがおすすめですが、
にあてはまるなら、Betwixtは良い選択肢です。
Betwixt*1はJavaBeanオリエンテッドなXMLバインディングツールです。先にJavaBeanのクラスを作っておけば
ができます。
// beanのインスタンスを作る // Betwixtで出力 FileWriter fw = new FileWriter("config.xml"); fw.write("\n"); BeanWriter writer = new BeanWriter(fw); writer.enablePrettyPrint(); writer.getXMLIntrospector().getConfiguration().setAttributesForPrimitives(true); writer.setInitialIndentLevel(0); writer.getBindingConfiguration().setMapIDs(false); writer.write(bean); fw.flush(); fw.close();
// Betwixtで読む InputStream is = new FileInputStream("config.xml"); BeanReader reader = new BeanReader(); reader.getXMLIntrospector().getConfiguration().setAttributesForPrimitives(true); reader.getBindingConfiguration().setMapIDs(false); reader.registerBeanClass(Beanのクラス); bean = (Beanのクラス)reader.parse(is);
ああ、簡単。
リストも対応できます*2。
出力フォーマットはデフォルトで要素名にクラス名/プロパティ名、要素値にそのプロパティの値、ですが、上記サンプルのように
writer.getXMLIntrospector().getConfiguration().setAttributesForPrimitives(true);
という設定をすると要素名にクラス名、属性名にプロパティ名、属性値にそのプロパティの値、というふうにもできます。
他にもある程度融通は利きますが、あまりフォーマット、「人間による記述のし易さ」にこだわるとBetwixtではおっつかなくなるかもしれません。