J'essaie de données unmarshall à partir d'un objet XML en Java en utilisant SimpleXML. Le but de l'ensemble était de convertir une API de JAXB en SimpleXML. Par conséquent, j'ai utilisé la méthode d'annotation de l'analyse du document. Voici le code:Unmarshalling des données XML directement dans l'objet
Dans la classe User:
@Element(name="created", required=false)
private Date created;
Le programmeur qui a écrit l'API utilisé un DateAdapter pour transformer la chaîne tirée depuis l'XML directement dans une date. J'ai essayé de le convertir en SimpleXML. Mon hypothèse est qu'un transformateur a utilisé la même approche. Voici ce code avant et après ...
Avant:
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);
}
}
Après:
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);
}
}
Je suppose que je l'ai fait la conversion mal parce que je reçois maintenant des erreurs de date inanalysables. La partie bizarre est que, même si je mets des blocs if-else ou try-catch dans les méthodes de lecture et d'écriture, je reçois toujours l'erreur. Donc je pense que la question principale est, comment puis-je écrire correctement un adaptateur comme celui de JAXB pour marshall/unmarshall entre la chaîne du XML et un objet Date.
Quelle est exactement l'erreur que vous obtenez, et où? Vous pourriez vouloir coller une trace de pile. – Ladlestein