2016-12-01 44 views
1

Я использую XStream для преобразования XML-строки в объект Java.Java XStream конвертировать XML в объект

У меня есть огромный набор данных, но я отправляю минимальный код ниже:

XStream xstream = new XStream(new StaxDriver()); 
xstream.alias("data", DetList.class); 
xstream.alias("i", Details.class); 
String s = new String("<data>\n" 
      +"\t<i Name='asia' type='continent' id='11'></i>\n" 
      +"\t<i Name='africa' type='continent' id='12'></i>\n" 
      +"\t<i Name='japan' type='country' id='13'></i>\n" 
      +"</data>"); 
System.out.println(s); 
DetList data = (DetList) xstream.fromXML(s); 

Когда я отладки, данные всегда нулевой.

Вот мой DetList класс:

public class DetList { 
    private List<Details> detlist; 

    public List<Details> getDetlist() { 
     return detlist; 
    } 

    public void setDetlist(List<Details> detlist) { 
     this.detlist = detlist; 
    } 
} 

И мой детали Класс:

public class Details { 

    private String Name; 
    private String type; 
    private String id; 

    //Getters and Setters are here. 
} 

данных является нулевым, который, как предполагается, содержит список я.

Как я могу заставить его работать?

+0

У вас есть ошибки? – GOXR3PLUS

+0

@ GOXR3PLUS Нет, ошибок нет. Я уверен, что что-то не хватает, но не знаю, что. –

+0

У вас есть получатели и сеттеры для переменной 'name'? Также должно быть 'name' istead' Name' – GOXR3PLUS

ответ

1

Это ваша ошибка на тот случай, если вы заинтересованы. Я заменю его, как только найду ответ:

Exception in thread "main" com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter$UnknownFieldException: No such field application.DetList.i 
---- Debugging information ---- 
message    : No such field application.DetList.i 
field    : i 
class    : application.DetList 
required-type  : application.DetList 
converter-type  : com.thoughtworks.xstream.converters.reflection.ReflectionConverter 
path    : /data/i 
line number   : 2 
version    : 1.4.9 
------------------------------- 
    at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.handleUnknownField(AbstractReflectionConverter.java:524) 
    at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:375) 
    at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:281) 
    at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72) 
    at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:70) 
    at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66) 
    at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:50) 
    at com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:134) 
    at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarshal(AbstractTreeMarshallingStrategy.java:32) 
    at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1230) 
    at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1214) 
    at com.thoughtworks.xstream.XStream.fromXML(XStream.java:1085) 
    at com.thoughtworks.xstream.XStream.fromXML(XStream.java:1076) 
    at application.Tester.main(Tester.java:15)