我有这个类定义:
@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
。我怎样才能做到这一点?
我尝试在 getter 上方并靠近属性声明的位置使用 @XmlAttribute(name = "xmlns:content")
,但没有成功。事情失败并显示以下消息:
Root Exception stack trace: com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 1 counts of IllegalAnno tationExceptions Class has two properties of the same name "_xmlns_content" this problem is related to the following location: RssRoot
我还能做什么?
最佳答案
最好使用现有的 RSS 支持库(例如 ROME ),而不是创建自己的库。
但如果你真的想要:
xmlns:content
不是一个属性,它是一个命名空间声明。当生成的 XML 包含该命名空间中的元素时,JAXB 会自动将其添加到生成的 XML 中(可以使用namespace
、@XmlElement
等中的@XmlRootElement
属性指定元素的命名空间)。重命名
rssRoot
至rss
,写@XmlRootElement(name = "rss")
。
关于java - 如何使用 JAXB 注释从 Java 类重命名 XML 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3354978/