2013-04-10 64 views
2

有XML:提取价值

<root> 
    <person id = "123"/> 
</root> 

豆映射:

public class Root { 
    private Person person; 
    public void setPerson(Person person) ... 
} 

public class Person { 
    String id; 
    public void setId(String id) ... 
} 

我不知道,如何能实现digester3模式设置idPerson类使用它的设置器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"); 
     } 
} 

回答

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有一个更好的主意。

+0

谢谢,这工作! – Andremoniy 2013-07-08 08:52:31