Связывание Java xml с неправильным именем атрибута xmlns - PullRequest
0 голосов
/ 20 мая 2010

Когда я использую аннотацию:

@XmlRootElement(name="RootElement", namespace="namespace")
class RootElement {

для создания XML-файла из Java, он создает корневой элемент как:

<ns2:RootElement xmlns:ns2="namespace">

, но я хотел создать без "ns2", например:

<RootElement xmlns="namespace">

Есть идеи, как это исправить?

Ссылка Reletad (пример, который я использовал для создания xml): http://www.java2s.com/Code/JavaAPI/javax.xml.bind.annotation/XmlRootElementname.htm

1 Ответ

2 голосов
/ 20 мая 2010

JAXB не использует xmlns = "namespace" в вашем случае, потому что xmlns = "namespace" также указывает пространство имен для дочерних элементов, тогда ваши элементы first и last находятся в пространстве имен по умолчанию (поскольку @XmlRootElement не определяет пространство имен для дочерних элементов). Итак, вам нужно установить пространство имен для first и last, используя @XmlElement:

  @XmlElement(namespace = "namespace")
  public String getFirst() {
    return first;
  }

  ...

  @XmlElement(namespace = "namespace")
  public String getLast() {
    return last;
  }

Вы также можете избежать необходимости писать пространство имен для каждого элемента, используя аннотацию на уровне пакета в package-info.java:

@javax.xml.bind.annotation.XmlSchema(
    namespace = "namespace",
    elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
package foo;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...