2012-04-02 80 views
1

我正在使用JAXB的現有應用程序。JAXB:是否需要將XMl屬性名稱與JAXB中的java Annotations匹配

目前有一種unmarshell的過程,將發生在一個XML文檔

例如,這是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註釋不匹配?但代碼仍在工作。

請讓我知道,如果我失去了一些東西?

回答

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