簡體   English   中英

XStream - XML 到 arrayList

[英]XStream - XML to arrayList

我對Java很陌生。 我有一個 XML 文件,我設法使用 xStream.toXML 從 ArrayList 創建了該文件。

我的 Client 類具有以下對象:

  • 字符串:名稱,ID

  • 整數:余額

  • ArrayList:電話

  • ArraList:最好的一天

  • 項目(自定義類):數據

我的 Item 類具有以下對象:

  • 字符串:名稱

  • 整數:價格

XML 文件如下所示:

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

現在,當我嘗試再次將此代碼變為 ArrayList 時,使用此代碼:

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

我在最后一行出現錯誤。

編輯:

好的,我只添加到構建路徑:

  • xstream-1.4.10.jar

  • xpp3_min-1.1.4c.jar

現在我添加了 xmlpull-1.1.3.1.jar 並且我有另一個錯誤:

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

檢查您的類路徑 classnotfounderror 大多數時間是指示所需的類不在類路徑中

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM