JAXB:不需要将XMl属性名称与JAXB中的Java Annotations匹配

时间:2012-04-02 12:30:17

标签: xml jaxb

我正在使用正在使用JAXB的现有应用程序。

目前,在XML文档上会发生一个unmarshell进程

例如,这是xml文档

String str = "<BACS xmlns=\"http://www.bacs.org/BACS\"><Bahut  number=\"1234\"><Order Quantity=\"1\" ><Bag value=\"1\" /></Order></Bahut><BACS>";


public class One{

    @XmlAttribute(name = "numberDT")
    protected String id;
    @XmlAttribute(name = "valueDT")
    protected String src;

我的问题是,在我们的应用程序中,XML属性名称和java注释中的名称不匹配?但代码仍在运作。

如果我遗失了什么,请告诉我?

1 个答案:

答案 0 :(得分:0)

是的,JAXB (JSR-222)元数据需要与XML匹配才能使解组成功。在您的使用案例中,您可能会看到几种可能的行为。

  1. 您正在查看的源可能与运行应用程序时使用的类不对应。您可能需要仔细检查类路径。
  2. 有问题的类可以使用XmlAdapter进行映射。 XmlAdapter是一种可以转换域对象的机制,转换的结果是映射到XML的内容。这意味着不会使用域对象上的注释。检查字段,属性,类型或包级别上的@XmlJavaTypeAdapter注释:http://blog.bdoughan.com/search/label/XmlAdapter
  3. 如果您正在使用EclipseLink JAXB(MOXy),则可以通过XML文档提供元数据,此XML文档可用于覆盖或替换通过注释提供的元数据:http://blog.bdoughan.com/2010/12/extending-jaxb-representing-annotations.html