Java xml绑定具有错误的xmlns属性名称

时间:2010-05-20 15:32:01

标签: java jaxb

当我使用注释时:

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

从java创建xml文件,它将根元素创建为:

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

但我想创建没有“ns2”,如:

<RootElement xmlns="namespace">

知道怎么解决吗?

Reletad链接(我用来创建xml的示例): http://www.java2s.com/Code/JavaAPI/javax.xml.bind.annotation/XmlRootElementname.htm

1 个答案:

答案 0 :(得分:2)

JAXB在您的情况下不使用xmlns = "namespace",因为xmlns = "namespace"还为子元素指定了命名空间,那么您的firstlast元素都在默认命名空间中(因为@XmlRootElement未指定子元素的命名空间。因此,您需要使用firstlast@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;