拥有xml:
<root>
<person id = "123"/>
</root>
Bean映射:
public class Root {
private Person person;
public void setPerson(Person person) ...
}
public class Person {
String id;
public void setId(String id) ...
}
我不知道 可以如何实现digester3
的模式来设置id
类的Person
setter (setId(String id)
)的风格如下:
new AbstractRulesModule() {
@Override
protected void configure() {
forPattern("root").createObject().ofType(Root.class);
forPattern("root/person").createObject().ofType(Person.class).then().setNext("setPerson");
}
}
答案 0 :(得分:3)
使用 callMethod()和 callParam()。你的代码是这样的:
new AbstractRulesModule() {
@Override
protected void configure() {
forPattern("root").createObject().ofType(Root.class);
forPattern("root/person").createObject().ofType(Person.class).then()
.callMethod("setId").withParamCount(1).then()
.callParam().ofIndex(0).fromAttribute("id").then()
.setNext("setPerson");
}
}
您可以咨询javadoc of digester3以获得更好的主意。