1

我正在实现一些 IHE ITI HL7 配置文件,并且有可用的模式,我从中生成了 JaxB 类。最近我发现不同版本的模式之间存在一些差异。特别是,一些 XML 元素现在是 XML 属性。

以前 typeCode 属性被映射到 XML 元素,请参见下面的示例:

 <acknowledgement>
    <typeCode code="AE"/>
</acknowledgement>

现在 typecode 属性被映射到一个 XML 属性,见下面的例子:

<acknowledgement typeCode="AE"/>

有什么方法可以让我使用任何注释或其他可能性来处理带有这些形式中的任何一种类型代码的消息的类?更好的是,有没有办法让 XJC 生成器自动为我做这件事,也许有某种绑定?

目前它只是一个带有@XmlAttribute 注释的字段。

4

1 回答 1

2

如果你愿意让你的手有点脏,你可以使用 XJC 插件很好地完成这个。XJC 有一个插件工具,允许您在使用Sun Codemodel API构建模型类时访问它们。开始需要一些争论,但是一旦你弄清楚了基础知识,在 JAXB 模型生成期间做各种有用的事情并不难。这里有一个很好的教程。

现在,假设您有一些配置告诉您哪些元素现在是属性,我认为您可以修改模型类,使其看起来像:

public class MyModel
{
  // this part is automatically generated by xjc
  @XmlAttribute
  public String foo;

  // you add this with your custom xjc plugin
  @XmlElement(name="foo")
  public String getFooElement() { return foo; }
  public void setFooElement(String newFoo) { foo = newFoo; }
}

我还没有实际测试过这个理论,但是手动修改模型类以查看总体思路是否有效应该很容易。

于 2012-02-10T19:06:40.557 回答