java - 使用定义名称的 XStream 存储 List<String>

标签 java xstream

我想将一些类存储到 xml:

    XStream xstream = new XStream(new DomDriver());

    List<String> modules = new ArrayList<String>();
    modules.add("mod1");
    modules.add("mod2");
    ModulesConfig modulesConfig = new ModulesConfig(modules);

xstream.processAnnotations(ModulesConfig.class);
log.info(xstream.toXML(modulesConfig));

类模块配置:

@XStreamAlias("modules-config")
public class ModulesConfig {

    @XStreamAlias("moduleName")
    private List<String> moduleNames;

    public ModulesConfig(List<String> moduleNames) {
        this.moduleNames = moduleNames;
    }

    public List<String> getModuleNames() {
        return moduleNames;
    }

    public void setModuleNames(List<String> moduleNames) {
        this.moduleNames = moduleNames;
    }
}

结果:

<modules-config>
  <moduleName>
    <string>mod1</string>
    <string>mod2</string>
  </moduleName>
</modules-config>

但我希望元素被命名为“moduleName”。如何配置 xstream 或者我必须向类添加哪些注释?我想要这样的结果:

<modules-config>
  <moduleNames>
    <moduleName>mod1</moduleName>
    <moduleName>mod2</moduleName>
  </moduleNames>
</modules-config>

最佳答案

这不会有您要求的确切结果,但看起来更清晰:

@XStreamImplicit(itemFieldName="moduleName")
private List<String> moduleNames;

产生的结果将是:

<modules-config>
  <moduleName>mod1</moduleName>
  <moduleName>mod2</moduleName>
</modules-config>

关于java - 使用定义名称的 XStream 存储 List<String>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8882883/

相关文章:

Java、继承和实例方法。为什么我的方法不能继承?

java - 如何在 Java 类中实现运算符

java - 使用 Cucumber 数据表注册 LocalDateTime xstream 转换器

java - XPath:以不同方式定义的节点

java - JSF/JPA 错误 : The class 'java.lang.String' does not have the property

java - JComboBox 让 GUI 消失

java - 从组合框中选择一个项目(名称)并自动插入正确的外键

java - 使用 RESTlet,XStream 注释似乎没有效果

Java XStream 无法解析类异常

java - XStream 如何选择其转换器?