Как переименовать атрибуты XML из классов Java, используя аннотации JAXB? - PullRequest
0 голосов
/ 28 июля 2010

У меня есть определение этого класса:

@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") над геттером и рядом с декларацией свойства, но безуспешно.С этим сообщением происходит сбой:

Трассировка стека корневых исключений: com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 1 счетчик IllegalAnno Класс tationExceptions имеет два свойства с одинаковым именем "_xmlns_content«Эта проблема связана со следующим местоположением: RssRoot

Что еще я могу сделать?

1 Ответ

2 голосов
/ 28 июля 2010

Может быть лучше использовать существующие библиотеки для поддержки RSS (например, ROME ) вместо создания своих собственных.

Но если вы действительно хотите:

  • xmlns:content - это не атрибут, это объявление пространства имен. JAXB добавляет его в результирующий XML автоматически, когда результирующий XML содержит элементы в этом пространстве имен (пространство имен элементов можно указать с помощью атрибута namespace в @XmlElement, @XmlRootElement и т. Д.).

  • Чтобы переименовать rssRoot в rss, напишите @XmlRootElement(name = "rss").

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...