Printemps de Démarrage de lot - lire le XML d'entrée - de convertir des éléments de liste

Je code un lot de services, à l'aide de Spring Boot, qui lit un fichier XML en entrée.
La structure XML d'entrée ressemble à ça, et je ne peux pas la changer :

<root>
    <parent>
        <field1>string</field1>
        <field2>string</field2>
        <field3>string</field2>
        <child>
            <fieldA>string</fieldA>
            <fieldB>string</fieldB>
        </child>
        <child>
            <fieldA>string</fieldA>
            <fieldB>string</fieldB>
        </child>
        <child>
            <fieldA>string</fieldA>
            <fieldB>string</fieldB>
        </child>
    </parent>
</root>

J'ai créé mes classes Java :

public class Parent {
    private String field1;
    private String field2;
    private String field3;
    private List<Child> children;

    //Getters and setters...
}

public class Child {
    private String fieldA;
    private String fieldB;

    //Getters and setters...
}

Et voici mon lecteur dans le lot de configuration de la classe :

@Bean
public ItemReader<Object> reader(){
    StaxEventItemReader<Object> reader = new StaxEventItemReader<Object>();
    reader.setResource( new ClassPathResource("input.xml") );
    reader.setFragmentRootElementName("parent");

    XStreamMarshaller unmarshaller = new XStreamMarshaller();
    Map<String, Class> aliases = new HashMap<String, Class>();
    aliases.put( "parent", Parent.class );
    aliases.put( "child", Child.class );
    unmarshaller.setAliases(aliases);

    reader.setUnmarshaller( unmarshaller );
    return reader;
}

Pour l'instant j'essaie juste d'avoir une lecture correcte.
Mais quand je lance le batch, j'ai une erreur :

org.springframework.oxm.UnmarshallingFailureException: XStream unmarshalling exception; nested exception is com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter$UnknownFieldException: No such field foo.bar.Parent.child

Je comprends cette erreur, mais je ne peux pas trouver un moyen de corriger mon code.
J'ai essayé de créer un faux setter dans le Parent, l'ajout de l'enfant à la liste des enfants. Mais il ne semble pas fonctionner.

Une idée ?

OriginalL'auteur Eria | 2015-10-09