Java 使用 XStream 读取 XML

2023-11-29

我正在尝试使用 XStream 反序列化此 XML 文件,但收到此错误

Exception in thread "main" com.thoughtworks.xstream.converters.ConversionException: Authors : Authors
---- Debugging information ----
message             : Authors
cause-exception     : com.thoughtworks.xstream.mapper.CannotResolveClassException
cause-message       : Authors
class               : java.util.ArrayList
required-type       : java.util.ArrayList
converter-type      : com.thoughtworks.xstream.converters.collections.CollectionConverter
path                : /ListOfDBook/DBook/Authors
class[1]            : com.test.books.ListOfDBook
converter-type[1]   : com.thoughtworks.xstream.converters.reflection.ReflectionConverter
version             : null
-------------------------------
    at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:79)
    at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65)
    at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66)
    at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshallField(AbstractReflectionConverter.java:355)
    at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:306)
    at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:234)
    at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72)
    at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65)
    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:1058)
    at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1042)
    at com.thoughtworks.xstream.XStream.fromXML(XStream.java:922)
    at com.test.booktest.BookImport.getBooks(BookImport.java:34)
    at com.test.booktest.Client.main(Client.java:6)
Caused by: com.thoughtworks.xstream.mapper.CannotResolveClassException: Authors
    at com.thoughtworks.xstream.mapper.DefaultMapper.realClass(DefaultMapper.java:56)
    at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
    at com.thoughtworks.xstream.mapper.DynamicProxyMapper.realClass(DynamicProxyMapper.java:55)
    at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
    at com.thoughtworks.xstream.mapper.PackageAliasingMapper.realClass(PackageAliasingMapper.java:88)
    at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
    at com.thoughtworks.xstream.mapper.ClassAliasingMapper.realClass(ClassAliasingMapper.java:79)
    at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
    at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
    at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
    at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
    at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
    at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
    at com.thoughtworks.xstream.mapper.ArrayMapper.realClass(ArrayMapper.java:74)
    at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
    at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
    at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
    at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
    at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
    at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
    at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
    at com.thoughtworks.xstream.mapper.CachingMapper.realClass(CachingMapper.java:45)
    at com.thoughtworks.xstream.core.util.HierarchicalStreams.readClassType(HierarchicalStreams.java:29)
    at com.thoughtworks.xstream.converters.collections.AbstractCollectionConverter.readItem(AbstractCollectionConverter.java:70)
    at com.thoughtworks.xstream.converters.collections.CollectionConverter.addCurrentElementToCollection(CollectionConverter.java:79)
    at com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:72)
    at com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:66)
    at com.thoughtworks.xstream.converters.collections.CollectionConverter.unmarshal(CollectionConverter.java:61)
    at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72)
    ... 16 more

有了这个 XML

<ListOfDBook xmlns="Test.Books" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
    <DBook>
        <Authors>
            <DAuthor>
                <Name>Google</Name>
                <Url>http://google.com</Url>
            </DAuthor>
        </Authors>
    </DBook>
</ListOfDBook>

有了这些课程

//ListOfDBook.java
public class ListOfDBook {
    public ArrayList<DBook> DBook; 
}

//DBook.java
public class DBook {
    public ArrayList<DAuthor> Authors;
}

//DAuthor.java
public class DAuthor {
    String Name;
    String Url;
}

//BookImport.java
import com.test.books.*;
XStream xstream = new XStream(new DomDriver());
xstream.alias("ListOfDBook", ListOfDBook.class);
InputStream in = new FileInputStream("Books.xml");
ListOfDBook = (ListOfDBook)xstream.fromXML(in);

我通过读取 XML 文件重新创建了类,并且无法更改 XML 文件。我做错了什么吗?


您缺少作者吗?

//ListOfDBook.java
public class ListOfDBook {
    public ArrayList<DBook> DBook; 
}

//DBook.java
public class DBook {
    public ArrayList<Author> Authors;
}

//Author.java
public class Author {
    public ArrayList<DAuthor> DAuthors;
}

//DAuthor.java
public class DAuthor {
    String Name;
    String Url;
}

EDIT 2:

你需要使用addImplicitCollection.

import java.util.*;
import com.thoughtworks.xstream.*;
import com.thoughtworks.xstream.io.*;
import com.thoughtworks.xstream.io.xml.*;
import java.io.*;

public class Test {

    public static void main(String[] args) throws Exception {

        XStream xstream = new XStream(new DomDriver());
        xstream.alias("ListOfDBook", ListOfDBook.class);
        xstream.alias("DBook", DBook.class);
        xstream.alias("Authors", Authors.class);
        xstream.alias("DAuthor", DAuthor.class);
        xstream.addImplicitCollection(Authors.class, "dauthors");
        xstream.addImplicitCollection(DBook.class, "authors");
        xstream.addImplicitCollection(ListOfDBook.class, "dbooks");
        InputStream in = new FileInputStream("Books.xml");
        ListOfDBook var = (ListOfDBook)xstream.fromXML(in);

    }

}

//ListOfDBook.java
class ListOfDBook {
    public List<DBook> dbooks = new LinkedList<DBook>(); 
}

//DBook.java
class DBook {
    public List<Authors> authors = new LinkedList<Authors>();
}

//Authors.java
class Authors {
    public List<DAuthor> dauthors = new LinkedList<DAuthor>();
}

//DAuthor.java
class DAuthor {
    public String Name;
    public String Url;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java 使用 XStream 读取 XML 的相关文章

  • Mockito:如何通过模拟测试我的服务?

    我是模拟测试新手 我想测试我的服务方法CorrectionService correctPerson Long personId 实现尚未编写 但这就是它将执行的操作 CorrectionService将调用一个方法AddressDAO这将
  • 在内存中使用 byte[] 创建 zip 文件。 Zip 文件总是损坏

    我创建的 zip 文件有问题 我正在使用 Java 7 我尝试从字节数组创建一个 zip 文件 其中包含两个或多个 Excel 文件 应用程序始终完成 没有任何异常 所以 我以为一切都好 当我尝试打开 zip 文件后 Windows 7 出
  • 如何循环遍历所有组合,例如48 选择 5 [重复]

    这个问题在这里已经有答案了 可能的重复 如何在java中从大小为n的集合中迭代生成k个元素子集 https stackoverflow com questions 4504974 how to iteratively generate k
  • 使用 LinkedList 实现下一个和上一个按钮

    这可能是一个愚蠢的问题 但我很难思考清楚 我编写了一个使用 LinkedList 来移动加载的 MIDI 乐器的方法 我想制作一个下一个和一个上一个按钮 以便每次单击该按钮时都会遍历 LinkedList 如果我硬编码itr next or
  • 如何在java中将一个数组列表替换为另一个不同大小的数组列表

    我有两个大小不同的数组列表 如何从此替换 ArrayList
  • 谷歌应用程序引擎会话

    什么是java应用程序引擎 默认会话超时 如果我们将会话超时设置为非常非常长的时间 会不会产生不良影响 因为谷歌应用程序引擎会话默认情况下仅存储在数据存储中 就像facebook一样 每次访问该页面时 会话仍然永远存在 默认会话超时设置为
  • 来自 dll 的 Java 调用函数

    我有这个 python 脚本导入zkemkeeperdll 并连接到考勤设备 ZKTeco 这是我正在使用的脚本 from win32com client import Dispatch zk Dispatch zkemkeeper ZKE
  • 从最终实体获取根证书和中间证书

    作为密码学的菜鸟 我每天都会偶然发现一些简单的事情 今天只是那些日子之一 我想用 bouncy castle 库验证 java 中的 smime 消息 我想我几乎已经弄清楚了 但此时的问题是 PKIXparameters 对象的构建 假设我
  • java.lang.IllegalStateException:提交响应后无法调用 sendRedirect()

    这两天我一直在尝试找出问题所在 我在这里读到我应该在代码中添加一个返回 我做到了 但我仍然得到 java lang IllegalStateException Cannot call sendRedirect after the respo
  • 帮助将图像从 Servlet 获取到 JSP 页面 [重复]

    这个问题在这里已经有答案了 我目前必须生成一个显示字符串文本的图像 我需要在 Servlet 上制作此图像 然后以某种方式将图像传递到 JSP 页面 以便它可以显示它 我试图避免保存图像 而是以某种方式将图像流式传输到 JSP 自从我开始寻
  • Java ResultSet 如何检查是否有结果

    结果集 http java sun com j2se 1 4 2 docs api java sql ResultSet html没有 hasNext 方法 我想检查 resultSet 是否有任何值 这是正确的方法吗 if resultS
  • Java 和 Python 可以在同一个应用程序中共存吗?

    我需要一个 Java 实例直接从 Python 实例数据存储中获取数据 我不知道这是否可能 数据存储是否透明 唯一 或者每个实例 如果它们确实可以共存 都有其单独的数据存储 总结一下 Java 应用程序如何从 Python 应用程序的数据存
  • Eclipse 选项卡宽度不变

    我浏览了一些与此相关的帖子 但它们似乎并不能帮助我解决我的问题 我有一个项目 其中 java 文件以 2 个空格的宽度缩进 我想将所有内容更改为 4 空格宽度 我尝试了 正确的缩进 选项 但当我将几行修改为 4 空格缩进时 它只是将所有内容
  • Android:无法使用 DbHelper 和 Contract 类将数据插入 SQLite

    public class Main2Activity extends AppCompatActivity private EditText editText1 editText2 editText3 editText4 private Bu
  • Opencv Java 灰度

    我编写了以下程序 尝试从彩色转换为灰度 Mat newImage Imgcodecs imread q1 jpg Mat image new Mat new Size newImage cols newImage rows CvType C
  • 在java中为组合框分配键

    我想添加一个JComboBox在 Swing 中这很简单 但我想为组合中的每个项目分配值 我有以下代码 JComboBox jc1 new JComboBox jc1 addItem a jc1 addItem b jc1 addItem
  • 如何将双精度/浮点四舍五入为二进制精度?

    我正在编写对浮点数执行计算的代码的测试 不出所料 结果很少是准确的 我想在计算结果和预期结果之间设置一个容差 我已经证实 在实践中 使用双精度 在对最后两位有效小数进行四舍五入后 结果始终是正确的 但是usually四舍五入最后一位小数后
  • 如果没有抽象成员,基类是否应该标记为抽象?

    如果一个类没有抽象成员 可以将其标记为抽象吗 即使没有实际理由直接实例化它 除了单元测试 是的 将不应该实例化的基类显式标记为抽象是合理且有益的 即使在没有抽象方法的情况下也是如此 它强制执行通用准则来使非叶类抽象 它阻止其他程序员创建该类
  • 如何防止在Spring Boot单元测试中执行import.sql

    我的类路径中有一个 import sql 文件 其中包含一些 INSERT 语句 当使用 profile devel 运行我的应用程序时 它的数据被加载到 postgres 数据库中 到目前为止一切正常 当使用测试配置文件执行测试时 imp
  • 使用 powershell 将 XML 转换为特定的 JSON 结构

    需要有关将 xml 转换为特定 json 结构的帮助 XML 看起来像这样

随机推荐

  • 如何使用 3d 数组和 2d 数组 numpy 进行掩码

    如何使用 1d 数组从 3d 数组中选择一组元素 These are my 3 data types A numpy ndarray numpy ndarray float B1 numpy ndarray numpy ndarray nu
  • XML DOM 设置文本内容

    我需要将一个大 XML 拆分为许多 child xml 文件 除了更改值之外 我的代码可以正常工作 我需要插入我的字符串Titleproper Bla bla text
  • Python 文本中重复的短语

    我有一个问题 我不知道如何解决它 请给一个建议 我有一条文字 好大好大的文字 任务是找到文本中所有长度为3 包含三个单词 的重复短语 在我看来 你有两个问题 第一个是提出一种标准化输入的有效方法 你说你想找到输入中的所有三词短语 但是短语是
  • preg_match 获取多个

    我有一个类似于 w e 更多 HTML 的页面 我需要获取标签之间的所有数据 而不是第一个数据 目前我使用
  • AWS Athena - 查询分区中不同年份的数据

    我们在 S3 中划分了大型数据集 例如s3 bucket year YYYY month MM day DD file csv 查询 Athena 中不同年份的数据并利用分区的最佳方式是什么 这是我尝试过的2018 03 07 至 2020
  • var_dump(对象)的结果是什么意思?

    var dump object 返回 object 1我真的很想知道 object 1 object 2 和 object 3 之间有什么区别 任何帮助表示赞赏 对于具有相同信息 相同类 相同属性 的对象 它允许确定它们是否是相同的实例 例
  • 如何禁用 Windows 编辑控件上的小触摸键盘

    在支持平板电脑的 Windows 版本中 当编辑控件获得焦点时 会出现一个小键盘图标 如果您触摸它 触摸键盘就会弹出 有办法禁用这个吗 如果你有自己的触摸键盘 那就相当不方便了 我想对代码中的某些编辑控件禁用它 即 我不是在寻找 Windo
  • 如何将 Cython 生成的模块从 python 导入到 C/C++ 主文件? (C/C++ 编程)[关闭]

    Closed 这个问题需要细节或清晰度 目前不接受答案 因此 我有一个用 python 编写的函数 并且按照 Cython 文档 使用 distutils 构建 Cython 模块 中的步骤进行操作 但是 我不清楚如何使用在 python
  • 新添加的列的数据未保存到数据库

    我在 Rails 4 应用程序中使用 Devise 进行用户身份验证 最近 我向用户模型添加了两个新列 他们是first name and last name 然后 我使用这两个属性的字段更新了登录表单 但是 当我测试创建新用户时 两者都没
  • PHP 标头函数的替代方案

    我正在开发一个具有许多样式表的网站 所有这些样式表都需要作为 PHP 脚本服务器端进行处理 我的 htaccess文件看起来像这样
  • 使用 R 进行网页抓取:尽管在程序中使用了长时间暂停,但仍出现 HTTP 错误 503

    我正在尝试搜索ProQuest 存档器使用 R 我有兴趣查找包含特定关键字的报纸的文章数量 通常使用它效果很好rvest工具 然而 该程序有时会崩溃 看这个最小的例子 library xml2 library rvest Retrieve
  • 如何将 Data Fusion 连接到 Cloud SQL 代理

    我正在尝试使用私有 IP 将 Data Fusion 与 Cloud SQL MySQL 连接起来 我读过很多资源 似乎这是可能的 至少我仍然不相信这是不可能的 到目前为止我所拥有的 具有私有 IP 的 Data Fusion 私有实例 具
  • 将新输入的行与另一列值相乘并在 SQL 中查找总和

    我这里有 4 个表 我需要将表中新输入的行值与另一行相乘 并使用CustomerId 客户表 CustomerId Name EmailId 1 Paul email protected 2 John email protected 忠诚度
  • 将图表从 dojo 图表导出/转换为图像

    谁能告诉我是否可以将 dojo 图表对象转换为 mage 文件 我需要这个 因为我想从包含一些数据和表示图表的网页导出 Excel 文件 我唯一发现的是http dojotoolkit org reference guide dojox g
  • 使用 Jenkins DSL 插件进行稀疏结账?

    有谁有正确的代码示例 configure Jenkins DSL 插件中需要块来设置 git 稀疏结帐吗 config xml 部分看起来像这样
  • 适用于 Windows 的 CoffeeScript IDE - 尝试过 Titanium Studio 和 RubyMine

    我正在尝试找到一种在 Windows 上使用 CoffeeScript 的好方法 并且能够在 IDE 中将这些文件快速处理为 JavaScript RubyMine 如果我只是在 RubyMine 中打开一个 coffee 文件 这似乎可以
  • 在 UIPopover 内显示 UIDatePicker

    我正在使用以下代码来显示UIDatePicker在一个UIPopover当用户单击时显示UIButton 问题是 它显示在一个尴尬的位置 我想添加一个UIToolBar上面的datePicker有额外空间的地方 这将会有cancel and
  • 如何在 JavaFX Canvas 上禁用抗锯齿功能?

    目前我正在使用 JavaFX 开发一款 2D 游戏 该游戏是像素艺术的 不幸的是 由于抗锯齿 像素艺术变得模糊 有什么方法可以禁用 JavaFX 画布上的抗锯齿功能吗 我尝试过使用 SceneAntialiasing DISABLED 但它
  • Facade 和 Mediator 设计模式的区别?

    外观设计模式和中介设计模式有什么区别 我想了解在哪种情况下在这两种设计模式之间选择哪种设计模式 我浏览了以下链接 发现两者在用例方面都是相同的 立面设计模式 http www tutorialspoint com design patter
  • Java 使用 XStream 读取 XML

    我正在尝试使用 XStream 反序列化此 XML 文件 但收到此错误 Exception in thread main com thoughtworks xstream converters ConversionException Aut