2010-07-28 79 views
0

我有這個類確定指標:如何使用JAXB批註從Java類重命名XML屬性?

@XmlRootElement 
public class RssRoot { 

private String _version; 

private String _xmlns_content; 

@XmlAttribute() 
public String get_version() { 
    return _version; 
} 

@XmlAttribute() 
public String get_xmlns_content() { 
    return _xmlns_content; 
} 

public void set_version(String version) { 
    _version = version; 
} 

public void set_xmlns_content(String xmlnsContent) { 
    _xmlns_content = xmlnsContent; 
} 

public RssRoot() { 
    super(); 

    this._version = "2.0"; 
    this._xmlns_content = "http://purl.org/rss/1.0/modules/content/"; 
} 

} 

而且它生成此XML:

<rssRoot xmlnsContent="http://purl.org/rss/1.0/modules/content/" version="2.0"/> 

不過,我需要重新命名xmlnsContentxmlns:content,並rssRoot,以rss。我怎樣才能做到這一點?

我嘗試了@XmlAttribute(name = "xmlns:content")以上的getter和附近的屬性聲明,但沒有運氣。事情失敗,此消息:

根異常堆棧跟蹤: com.sun.xml.bind.v2.runtime.IllegalAnnotationsException:1個計數IllegalAnno的 tationExceptions 類具有相同名稱的兩個屬性「_xmlns_content 「 此問題與以下位置有關:RssRoot

我還能做什麼?

回答

2

使用現有的庫支持RSS(例如ROME)可能更好,而不是創建自己的庫。

但是,如果你真的想:

  • xmlns:content不是一個屬性,它是一個命名空間聲明。當結果XML包含該名稱空間中的元素時,JAXB會將其自動添加到生成的XML中(元素的名稱空間可使用@XmlElement,等中的namespace屬性指定)。

  • 要將rssRoot重命名爲rss,請編寫@XmlRootElement(name = "rss")