使用 JAXB 将具有单个变量的 Java 对象转换为 XML

Convert Java Object with single variable to XML using JAXB

假设我有 class Foo

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

和class栏

public class Bar {
    @XmlElement
    private String id;
}

我想得到一个 XML 文件,例如

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

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

我知道我可以使用私有 getter 来做到这一点,但这看起来很奇怪,我想知道是否有使用标签的更干净的解决方案。

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

感谢这里之前的回答,我设法找到了一种方法。

Class foo 没有改变,保持原样

然而,

Class 栏停止使用 @XmlElement 并开始使用 @XmlValue,因此它看起来像这样:

public class Bar {
    @XmlValue
    private String id;
}