首页 > 解决方案 > 使用 JAXB 将具有单个变量的 Java 对象转换为 XML

问题描述

假设我有 Foo 课

@XmlRootElement(name="foo")
public class Foo {
    @XmlElement(name = "id")
    private Bar variable;
    @XmlElement
    private String name;
}

和类酒吧

public class Bar {
    @XmlElement
    private String id;
}

我想得到一个像

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<foo>
    <id>bar</id>
    <name>foo</name>
</foo>

但是当我运行元帅时,我得到了

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<foo>
    <id>    
        <id>bar</id>
    </id>
    <name>foo</name>
</foo>

由于必须遵循严格的封装规则,我不能使用 getter 或 setter,而且我不能简单地删除 Bar 类,因为 Bar 类在其构造函数中包含重要的业务逻辑。

我知道我可以使用私有 getter 来做到这一点,但这似乎是一个奇怪的 hack,我想知道是否有使用标签的更清洁的解决方案。

我试图研究 Jaxb 如何将 String 对象转换为简单的 XML 字符串元素但没有成功,但我认为它可能是硬编码的。

标签: javaxmljaxb

解决方案


多亏了以前的答案,我设法找到了一种方法来做到这一点。

类 foo 没有改变,它保持原样

然而,类 bar 停止使用@XmlElement并开始使用@XmlValue,所以它看起来像这样:

public class Bar {
    @XmlValue
    private String id;
}

推荐阅读