SimpleXML を使用して、Java で XML オブジェクトからデータを非整列化しようとしています。全体の要点は、API を JAXB から SimpleXML に変換することでした。したがって、ドキュメントを解析する注釈の方法を使用しました。ここにいくつかのコードがあります:
ユーザー クラスで:
@Element(name="created", required=false)
private Date created;
API を作成したプログラマーは、DateAdapter を使用して、XML から取得した文字列を直接日付に変換しました。SimpleXML に変換してみました。私の仮定は、トランスフォーマーが同じアプローチを使用したということです。これが前後のコードです...
前:
public class DateAdapter extends XmlAdapter<String, Date> {
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public Date unmarshal(String date) throws Exception {
return df.parse(date);
}
public String marshal(Date date) throws Exception {
return df.format(date);
}
}
後:
public class DateAdapter implements Transform<Date> {
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@Override
public Date read(String date) throws Exception {
return df.parse(date);
}
@Override
public String write(Date date) throws Exception {
return df.format(date);
}
}
解析不能な日付エラーが発生しているため、間違った変換を行ったと思います。奇妙な点は、読み取りおよび書き込みメソッド内に if-else または try-catch ブロックを配置しても、エラーが発生することです。
したがって、主な問題は、XML の文字列と Date オブジェクトの間でマーシャリング/アンマーシャリングを行う JAXB アダプタのようなアダプタを適切に作成するにはどうすればよいかということだと思います。