java - 使用 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 字符串元素但没有成功,但我认为它可能是硬编码的。
解决方案
多亏了以前的答案,我设法找到了一种方法来做到这一点。
类 foo 没有改变,它保持原样
然而,类 bar 停止使用@XmlElement
并开始使用@XmlValue
,所以它看起来像这样:
public class Bar {
@XmlValue
private String id;
}
推荐阅读
- django - Django 陈旧的 CSRF 令牌
- pine-script - 订单在同一条柱上执行止损和反转
- npm - 为什么 package.json 中的“文件”属性很危险?
- installation - 以管理员身份安装时写入 HKLM,否则在 Inno Setup 中写入 HKCU
- python-3.x - DataFrame中的for循环
- azureservicebus - Azure 服务总线资源管理器 - 所需权限
- python - 如何在 python 上自动打印变量?
- arrays - 我可以将属性放在数组中吗?
- c# - ASP.Net Core:通用控制器和模型继承
- javascript - 用for循环进行图像拼接