Hi Petr, Petr Adamec wrote:
> > Good morning, > I have a problem with convert from xml to data (unmarshall) when I use > xml which has unknown tags. Xstream write me Exception in thread "main" > com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter$UnknownFieldException: > No such field. This is the expected behavior. > I was looking for solution for my problem on internet. I find some it > but all of them do not working on my case. > > I override method wrapMapper but it still no working. > > XStream xstream = new XStream() { > > // to enable ignoring of unknown elements > > @Override > > protected MapperWrapper wrapMapper(MapperWrapper next) { > > return new MapperWrapper(next) { > > @Override > > public boolean shouldSerializeMember(Class definedIn, > String fieldName) { > > if (definedIn == Object.class) { > > try { > > return this.realClass(fieldName) != null; > > } catch (Exception e) { > > return false; > > } > > } > > return super.shouldSerializeMember(definedIn, > fieldName); > > } > > }; > > } > > }; > Which version of XStream are you using? > Is it maybe because I have a collection at class. But every options > which I try not works. > > My class which I need convert to/from is > > public class Configurations implements Serializable{ > > private static final long serialVersionUID = 4392719277296957995L; > > private List<Class<? extends Updatable>> tableNames; > > private Map<Class<? extends Updatable>, List<? extends Updatable>> > tables; > > ... > > } > > > Updatable is only interface. I need convert to/from xml every class > which implements this interface. > > In normal case, when I has right xml (get from marshell data) it is ok. > I can convert data to this xml and xml back to data. > > <mypackage.Configurations> > > <tableNames> > > <java-class>mypackage.configuration.MyClass</java-class> > > </tableNames> > > <tables> > > <entry> > > <java-class>mypackage.configuration.MyClass</java-class> > > <list> > > <mypackage.configuration.MyClass> > > <id>0</id> > > <created>2014-09-19 08:49:34.649 UTC</created> > > <active>true</active> > > </mypackage.configuration.MyClass> > > </list> > > </entry> > > </tables> > > </mypackage.Configurations> > > > But when I change xml (forr example add new tag newTag) > > <mypackage.Configurations> > > <tableNames> > > <java-class>mypackage.configuration.MyClass</java-class> > > </tableNames> > > <tables> > > <entry> > > <java-class>mypackage.configuration.MyClass</java-class> > > <list> > > <mypackage.configuration.MyClass> > > <id>0</id> > > <created>2014-09-19 08:49:34.649 UTC</created> > > <active>true</active> > > <newTag>exam</newTag> > > </mypackage.configuration.MyClass> > > </list> > > </entry> > > </tables> > > </mypackage.Configurations> > > > Xstream ends with error > AbstractReflectionConverter$UnknownFieldException: No such field. Is > exists solution how can I solve this problem? I need convert to data > (class) and if xml has unknown tags which does not exist at class, logg > some message and skip tag. See http://xstream.codehaus.org/faq.html#Serialization_newer_class_versions The topics also direct you to the proper location of the custom mapper from above. Cheers, Jörg --------------------------------------------------------------------- To unsubscribe from this list, please visit: http://xircles.codehaus.org/manage_email