我花了一整天的时间试图找出这个问题(包括在这个网站上进行广泛的搜索),但我找不到我的问题的答案。我正在努力实现这一目标:
- 在 XML 和一些我无法控制的现有 Java 对象之间进行转换
- 结果/源 XML 中的元素名称与 Java 类的属性名称不同
- 我仅限于 jaxb-2.0
- 我可能会介绍一个可以包含注释的包装类
让我向您展示我正在努力实现的目标。假设我无法控制的 Java 类如下所示:
public class TopNoControlClass {
private BottomNoControlClass bottomNoControlObject;
public TopNoControlClass(BottomNoControlClass bottomNoControlObject) {
super();
this.bottomNoControlObject = bottomNoControlObject;
}
public BottomNoControlClass getBottomNoControlObject() {
return bottomNoControlObject;
}
public void setBottomNoControlObject(BottomNoControlClass bottomNoControlObject) {
this.bottomNoControlObject = bottomNoControlObject;
}
}
和引用的类:
public class BottomNoControlClass {
private String foo;
public BottomNoControlClass(String foo) {
super();
this.foo = foo;
}
public String getFoo() {
return foo;
}
public void setFoo(String foo) {
this.foo = foo;
}
}
想象一下我想把这个从编组中解脱出来:
<?xml version="1.0" encoding="UTF-8"?>
<Top>
<Bottom>
<bar>XXX</bar>
</Bottom>
</Top>
<Top>将映射到TopNoControlClass并且<Bottom> Bottom 将映射到BottomNoControlClass并且<bar>将映射到BottomNoControlClass的foo属性。
为了执行上述操作,我会很乐意创建一个说明映射的外部 XML 绑定,但我想不出在运行时使用该外部绑定文件的方法。到目前为止,我看到的所有示例都只在生成时使用了外部 XML 绑定(即作为 xjc 的参数)。
我也不会遇到引入包装类的问题,该包装类将覆盖它将引用的类的类名和类属性名(即TopNoControlClass和BottomNoControlClass)。使用该类构造JAXBContext并让 JAXB 完成其余工作会很容易。但我无法弄清楚该注释应该是什么样子。
任何帮助将不胜感激
雅罗斯拉夫