2013-04-10 3 views
2

Имея XML:Извлечение значения из атрибута XML с использованием digester3 шаблона

<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 «s шаблон для установки idPerson класс, используя его 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"); 
     } 
} 

ответ

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

Смежные вопросы