Я когда-то сам сталкивался с этим вопросом. Я не нашел никакого стандартного способа сделать это. Лучшее, что я придумал, было это:
digester.addRule(ROOT + "/lastBuildDate", new Rule() {
public void body(final String namespace, final String name, final String text) throws Exception {
Message message = (Message) getDigester().peek();
if (text == null || text.trim().equals("")) {
message.setDate(new Date());
} else {
try {
message.setDate(parseDate(text));
} catch (final ParseException e) {
Log.warn("failed to parse date: " + text, e);
message.setDate(new Date());
}
}
}
});
Date parseDate(String text) throws ParseException {
// left as an exercise to the reader
}
Я не могу помочь с использованием пользовательских правил из вашего XML-метки, так как всегда предпочитал создавать метки программно.
В качестве обходного пути вы можете создать дополнительный установщик в своем классе Person:
public void setDobAsString(String dob) throws ParseException {
setDob(parseDate(dob));
}