2017-10-23 1 views
1

Ich bin ziemlich neu in Java. Ich habe eine XML-Datei, die ich mit xStream.toXML aus einer ArrayList erstellen konnte.XStream - XML ​​zu ArrayList

Meine Client-Klasse hat die folgenden Objekte:

  • String: Name, ID

  • Integer: Balance

  • Arraylist: Telefon

  • ArraList: bestDay

  • Artikel (benutzerdefinierte Klasse): Daten

My Item-Klasse die folgenden Objekte hat:

  • String: Name

  • Integer: Preis

Die XML Datei sieht so aus:

<list> 
    <client> 
    <name>Client 1</name> 
    <id>054.658.547-74</id> 
    <phone> 
     <string>99564-5412</string> 
     <string>7854-5478</string> 
    </phone> 
    <bestDay> 
     <int>10</int> 
    </bestDay> 
    <balance>-20.0</balance> 
    <data> 
     <item> 
     <name>Item 1</name> 
     <price>5.0</price> 
     </item> 
     <item> 
     <name>Item 2</name> 
     <price>3.0</price> 
     </item> 
     <item reference="../item"/> 
     <item reference="../item[2]"/> 
    </data> 
    </client> 
    <client> 
    <name>Client 2</nome> 
    <id>047.654.987-78</id> 
    <phone> 
     <string>99564-1475</string> 
     <string>98544-5254</string> 
    </phone> 
    <bestDay> 
     <int>15</int> 
     <int>30</int> 
    </bestDay> 
    <balance>-15.0</balance> 
    <data> 
     <item> 
     <name>Item 3</name> 
     <price>4.0</price> 
     </item> 
     <item reference="../item"/> 
     <item reference="../item"/> 
     <item reference="../item"/> 
     <item reference="../item"/> 
    </data> 
    </client> 
</list> 

Nun, wenn ich versuche, wieder diesen Code in eine Arraylist zu machen, mit diesem Code:

XStream xStream = new XStream(); 
String rawXML = new String(Files.readAllBytes(Paths.get("output.xml"))); 
ArrayList<Client> = (ArrayList<Client>)xStream.fromXML(rawXML); 

Ich erhalte eine Fehlermeldung in der letzten Zeile.

EDIT:

Ok, ich hatte nur auf die buildpath hinzugefügt:

  • xstream-1.4.10.jar

  • xpp3_min-1.1.4c.jar

Jetzt habe ich xmlpull-1.1.3.1.jar hinzugefügt und ich habe eine andere Fehler:

Security framework of XStream not initialized, XStream is probably vulnerable. 
java.lang.reflect.InvocationTargetException 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:389) 
    at com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:328) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:767) 
Caused by: com.thoughtworks.xstream.converters.ConversionException: 
---- Debugging information ---- 
cause-exception  : com.thoughtworks.xstream.mapper.CannotResolveClassException 
cause-message  : cliente 
class    : java.util.ArrayList 
required-type  : java.util.ArrayList 
converter-type  : com.thoughtworks.xstream.converters.collections.CollectionConverter 
path    : /list/cliente 
line number   : 2 
version    : 1.4.10 
------------------------------- 
    at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:79) 
    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:1486) 
    at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1466) 
    at com.thoughtworks.xstream.XStream.fromXML(XStream.java:1337) 
    at com.thoughtworks.xstream.XStream.fromXML(XStream.java:1328) 
    at application.Cliente.load(Cliente.java:88) 
    at application.Main.main(Main.java:40) 
    ... 11 more 
Caused by: com.thoughtworks.xstream.mapper.CannotResolveClassException: cliente 
    at com.thoughtworks.xstream.mapper.DefaultMapper.realClass(DefaultMapper.java:81) 
    at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:125) 
    at com.thoughtworks.xstream.mapper.DynamicProxyMapper.realClass(DynamicProxyMapper.java:55) 
    at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:125) 
    at com.thoughtworks.xstream.mapper.PackageAliasingMapper.realClass(PackageAliasingMapper.java:88) 
    at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:125) 
    at com.thoughtworks.xstream.mapper.ClassAliasingMapper.realClass(ClassAliasingMapper.java:79) 
    at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:125) 
    at com.thoughtworks.xstream.mapper.ArrayMapper.realClass(ArrayMapper.java:74) 
    at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:125) 
    at com.thoughtworks.xstream.mapper.SecurityMapper.realClass(SecurityMapper.java:71) 
    at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:125) 
    at com.thoughtworks.xstream.mapper.CachingMapper.realClass(CachingMapper.java:47) 
    at com.thoughtworks.xstream.core.util.HierarchicalStreams.readClassType(HierarchicalStreams.java:29) 
    at com.thoughtworks.xstream.converters.collections.AbstractCollectionConverter.readItem(AbstractCollectionConverter.java:72) 
    at com.thoughtworks.xstream.converters.collections.CollectionConverter.addCurrentElementToCollection(CollectionConverter.java:98) 
    at com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:91) 
    at com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:85) 
    at com.thoughtworks.xstream.converters.collections.CollectionConverter.unmarshal(CollectionConverter.java:80) 
    at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72) 
    ... 22 more 
Exception running application application.Main 
+1

Mögliche Duplikat [XStream XmlPullParserException] (https erforderlich ist: // Stackoverflow. com/questions/21664249/xstream-xmlpullparserexception) – glytching

+0

Mögliche Duplikate von [Sicherheitsrahmen von XStream nicht initialisiert, XStream ist wahrscheinlich anfällig] (https://stackoverflow.com/questions/44698296/security-framework-of-xstream-not- initialized-Xstream-ist-wahrscheinlich-anfällig) – Thyaris

Antwort

1

Classpath prüfen A classnotfounderror Die meiste Zeit ist ein Indikator dafür, dass die Klasse, die nicht in dem Classpath

+0

Wie kompilieren Sie und führen Sie den Code aus? – Thyaris

+0

Ok, ich hatte dem Klassenpfad nur xstream-1.4.10.jar und xpp3_min-1.1.4c.jar hinzugefügt. Jetzt habe ich xmlpull-1.1.3.1.jar hinzugefügt und ich habe einen weiteren Fehler: Sicherheitsrahmen von XStream nicht initialisiert, XStream ist wahrscheinlich anfällig. Ich werde den vollständigen Fehler im Hauptpost bearbeiten. – Eduardo

+0

Bitte werfen Sie einen Blick auf die Dokumentation der API. Es ist sehr wahrscheinlich, dass Sie den Xstream vor der Verwendung einrichten müssen. Sehen Sie sich auch https://stackoverflow.com/questions/44698296/security-framework-of-xstream-not-initialized-xstream-isprobably-vulnerable an – Thyaris