非整列化しようとしている XML ファイルがありますが、その方法がわかりません。
XMLは次のようになります
<config>
<params>
<param>
<a>draft</a>
<b>Serial</b>
</param>
<param>
<a>amt</a>
<b>Amount</b>
</param>
</params>
<server>
<scheme>http</scheme>
<host>somehost.com/asdf</host>
</server>
</config>
以前は、ルート要素として params があり、ルート要素としてサーバー要素または構成がなかった場合に非整列化できました。
これをアンマーシャリングするために構成クラスを追加しましたが、どこが間違っているのかわかりません。
私のクラスは次のようになります
@XmlRootElement
public class Config {
private Params params = new Params();
@XmlElement(name="params")
public Params getParams() {
return params;
}
public void setParam(Params params) {
this.params = params;
}
}
public class Params {
private List<Param> params = new ArrayList<Param>();
public List <Param> getParam() {
return params;
}
public void setParam(List<Param> params) {
this.params = params;
}
}
public class Param {
String a;
String b;
//getters and setters. omitted for brevity
}
コードの非整列化
File file = new File("C:\\config.xml");
InputStream inputStream = new FileInputStream(file);
JAXBContext jc = JAXBContext.newInstance(Config.class);
Unmarshaller u = jc.createUnmarshaller();
conf = (Config) u.unmarshal(file);
System.out.println(conf.getParams().getParam().size());
println は 0 を出力します。どこで間違ったのでしょうか?
サーバーノードのコードがまだないことはわかっています。まだそこに到達していません。私の実際の XML にはまだそのノードがなく、config タグ内で params を正しく非整列化することはまだできません。