我有这个课程定义:
@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")
在吸气剂上方并靠近物业声明,但没有运气。事情失败了这条消息:
Root异常堆栈跟踪: com.sun.xml.bind.v2.runtime.IllegalAnnotationsException:IllegalAnno的1个计数 tationExceptions 类有两个同名的属性“_xmlns_content” 此问题与以下位置有关:RssRoot
我还能做什么?
答案 0 :(得分:2)
最好使用现有的库来支持RSS(例如ROME),而不是创建自己的库。
但如果你真的想要:
xmlns:content
不是属性,它是名称空间声明。当结果XML包含该命名空间中的元素时,JAXB会自动将其添加到生成的XML中(可以使用namespace
,@XmlElement
等中的@XmlRootElement
属性指定元素的命名空间。
要将rssRoot
重命名为rss
,请写下@XmlRootElement(name = "rss")
。