2016-12-01 3 views
1

konvertieren Ich verwende XStream, um XML-Zeichenfolge in Java-Objekt zu konvertieren.Java XStream XML in Objekt

Ich habe eine riesige Menge von Daten, aber ich bin mit dem minimalen Code veröffentlichen unter:

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); 

Wenn ich debuggen, Daten immer null ist.

Hier ist meine DetList Klasse:

public class DetList { 
    private List<Details> detlist; 

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

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

Und meine Details zur Klasse:

public class Details { 

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

    //Getters and Setters are here. 
} 

Daten null ist, die die Liste der i enthalten soll.

Wie kann ich es zur Arbeit bringen?

+0

Erhalten Sie irgendwelche Fehler? – GOXR3PLUS

+0

@ GOXR3PLUS Nein, es gibt keine Fehler. Ich bin sicher, dass ich etwas verpasse, aber nicht sicher was. –

+0

Sie haben die Getter und Setter für die Variable 'name'? Auch sollte es "Name" anstelle von "Name" sein. – GOXR3PLUS

Antwort

1

Hier ist Ihr Fehler, falls Sie interessiert sind. Ich werde es ersetzen, sobald ich die Antwort finde:

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)