使用digester3模式从xml属性中提取值

时间:2013-04-10 15:04:47

标签: java apache-commons-digester

拥有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");
        }
}

1 个答案:

答案 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以获得更好的主意。