使用 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;
}
假设我有 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;
}