簡體   English   中英

JAXB如何將類名映射到XML元素名稱?

[英]How does JAXB map a class name to an XML element name?

我正在使用JAXB(JDK 6中包含的版本)將對象編組為XML。 以下代碼會產生意外結果:


    public class JAXBTest {
        @XmlRootElement
        public static class VIPPerson {}

    public static void main(String[] args) throws JAXBException {
        StringWriter sw = new StringWriter();
        VIPPerson p = new VIPPerson();
        JAXB.marshal(p, sw);
        System.out.println(sw.toString());
    }
}

以上的輸出是

 <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <vipPerson/> 

我期望看到類名映射到VIPPerson元素而不是vipPerson基於JAXB規范中的 8.12.1節,

類名:使用java.beans.Introspector.decapitalize(類名)通過de capitalization將類名映射到XML名稱。

decapitalize方法的JavaDoc說:

獲取字符串並將其轉換為普通Java變量名稱大小寫的實用方法。 這通常意味着將第一個字符從大寫轉換為小寫, 但在(異常)特殊情況下,當有多個字符並且第一個和第二個字符都是大寫時,我們不管它 因此,“FooBah”變為“fooBah”,“X”變為“x”,但“URL”保持為“URL”。

實施是違反規范還是我誤解了什么?

這是由參考實現中的錯誤引起的。 看起來它不會被修復,因為它會導致兼容性問題。 解決方法是使用@XmlRootElement顯式指定名稱。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM