【问题标题】:Java xml binding with wrong xmlns attribute nameJava xml 绑定错误的 xmlns 属性名称
【发布时间】:2010-05-20 15:32:00
【问题描述】:

当我使用注解时:

@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

【问题讨论】:

    标签: java jaxb


    【解决方案1】:

    JAXB 在您的情况下不使用xmlns = "namespace",因为xmlns = "namespace" 还为子元素指定命名空间,然后您的first 和last 元素位于默认命名空间中(因为@XmlRootElement 没有指定命名空间对于子元素)。因此,您需要使用@XmlElement 为first 和last 设置命名空间:

      @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;
    

    【讨论】:

    猜你喜欢
    • 2012-09-16
    • 1970-01-01
    • 1970-01-01
    • 2011-09-01
    • 2010-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多