代码之家  ›  专栏  ›  技术社区  ›  Alex. S.

如何使用JAXB注解将XML属性重命名为Java类?

  •  0
  • Alex. S.  · 技术社区  · 14 年前

    我有这个班级定义:

    @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"/>
    

    但是,我需要重新命名 xmlnsContent xmlns:content rssRoot ,为了 rss . 我该怎么做?

    我尝试过 @XmlAttribute(name = "xmlns:content") 上面的getter和附近的财产申报,但没有运气。这条消息失败了:

    根异常堆栈跟踪: com.sun.xml.bind.v2.runtime.illegalannotationsException:1个illegalanno计数 静态例外 类有两个同名属性“_xmlns_content” 此问题与以下位置有关:rssroot

    我还能做什么?

    1 回复  |  直到 14 年前
        1
  •  2
  •   axtavt    14 年前

    最好使用现有的库来支持RSS(例如 ROME )而不是自己创造。

    但如果你真的想要:

    • xmlns:content 不是属性,而是命名空间声明。当生成的XML包含该命名空间中的元素时,JAXB会自动将其添加到生成的XML中(可以使用 namespace 属性在 @XmlElement , @XmlRootElement 等)。

    • 重命名 rssRoot rss @XmlRootElement(name = "rss") .