java - 如何使用 JAXB 注释从 Java 类重命名 XML 属性?

标签 java xml jaxb

我有这个类定义:

@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 属性指定元素的命名空间)。

  • 重命名rssRootrss ,写@XmlRootElement(name = "rss")

关于java - 如何使用 JAXB 注释从 Java 类重命名 XML 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3354978/

相关文章:

java - 配置 ChatCamp Sdk 并导入示例项目时出现错误

java - 提供 SOAP/XML + REST/JSON 的最佳方式是什么?

sql - 使用 FOR XML PATH 时如何删除嵌套查询中的冗余 namespace

xml - 使用 JAXB 使用 XmlElement 和 XmlAttributes 解析和 XML

java - 是否可以删除 WS 结果中的包装器元素?

java - 将频率转换为 java.time.Period 类型

java - 试图显示从相机 Intent 中拍摄的图像

java - 如何通过持久性动态配置数据库连接

java - 使用 JAXB 解码

java - RuntimeException : java. io.IOException : unexpected element (uri :"urn:infinispan:config:4.2", 本地 :"property")。预期元素为 <{}entry>