当前位置: 首页 > 知识库问答 >
问题:

包含隐式集合的XStream问题

薛欣荣
2023-03-14
<appConfig>
    <database isSource="true" fizz="129"/>
    <database isSource="false" fizz="29494" />
    <buzz bee="always" />
</appConfig>
public class AppConfig {
    private Database sourceDb;
    private Database targetDb;
    private Buzz buzz;
}

public class Database {
    // Omitted for brevity...
}

public class Buzz {
    // Omitted for brevity...
}
XStream oxMapper = new XStream();
oxMapper.alias("appConfig", AppConfig.class);
oxMapper.alias("database", Database.class);
oxMapper.alias("buzz",  Buzz.class);
ApplicationConfig appCfg = (ApplicationConfig)oxMapper.fromXML(
        getXMLSnippet());

但我得到了这个错误:

Element database of type com.myapp.Database is not defined as field in type com.myapp.AppConfig

我读过这篇关于隐式集合的文章,认为XStream认为我的两个database项是列表(隐式集合)的一部分,而实际上它们不是(它们应该映射到两个不同的appconfig属性)。

我怎么解决这个?提前道谢!

共有1个答案

苏弘盛
2023-03-14
oxMapper.alias("sourceDb", Database.class);
oxMapper.alias("targetDb", Database.class);
oxMapper.alias("buzz",  Buzz.class);
 类似资料:
  • 我正在使用一个生成这种类型XML的系统: 另一个用例是集合、数组和映射。如果一个类有一个属于这些类型之一的字段,默认情况下,它的所有元素都嵌入到表示容器对象本身的元素中。通过使用、和方法配置XStream,可以将元素直接保留为类的子元素,并且省略容器对象的周围标记。甚至可以为一个类声明多个隐式集合、数组或映射,但元素必须是可区分的,以便在反序列化时正确填充不同的容器。 在下面的示例中,表示farm

  • 我有一个集合,其中每个文档都有一些公共数据,如用户名和字符级别,但也有一个私有子集合,它有字符的黄金量。 现在我可以查询特定文档的characters collection,但是子collection数据不会返回,所以我需要执行二次查询来检索它。

  • 我在我的项目中使用SKMaps,它用于下载离线地图,我必须使用NSPredicatefor搜索一些SKTPackage集合。 为了显示国家的名称,我读取了这样的“en”值 现在我想从列表中搜索国家的名称。现在我使用以下代码行 但它给了我一个崩溃的消息如下 “NSInvalidArgumentException”,原因:“无法在/包含带有集合(不是集合)的运算符中使用”。 请告诉我使用NSPredi

  • 在服务器启动时注册映射器类时抛出了以下错误消息, 下面是我的UserMapper接口,

  • 我需要创建一个fiRecovery文档,它也有一个集合,理想情况下是在单个写入操作中。 我在文档中没有看到类似的内容,因此,如果失败了,那么关于获取创建的文档id然后将多个文档添加到集合中有什么提示吗? 编辑:我正在用typescript/js开发