I have an xml doc that looks something like this:
<response>
<total>1000</total>
<warning>warning1</warning>
<warning>warning2</warning>
</response>
My object looks like this:
public class Response {
private BigDecimal total;
private List<String> warnings=new ArrayList<String>();
public List<String> getWarnings() {
return warnings;
}
public void setWarnings(List<String> warnings) {
this.warnings = warnings;
}
public BigDecimal getTotal() {
return total;
}
public void setTotal(BigDecimal total) {
this.total = total;
}
public void addWarning(String warning) {
warnings.add(warning);
}
}
I'm trying to map it like this:
Digester digester = new Digester();
digester.setValidating( false );
digester.addObjectCreate( "response", Response.class );
digester.addBeanPropertySetter( "response/total", "total" );
digester.addObjectCreate("response/warning","warnings", ArrayList.class);
digester.addCallMethod("response/warning", "add", 1);
digester.addCallParam("response/warning", 0);
ret = (Rate)digester.parse(new ByteArrayInputStream(xml.getBytes()));
However, I can't get it to populate the list. The total does get set correctly. For what it's worth, I have no control over the XML, but can change my Response object. Any ideas? Thanks in advance.
You have already had
addWarning
method in yourResponse
class andwarnings
is initialized too. Just rewrite your rules:And that's all.