加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – Jaxb生成的xml – 根元素前缀的问题

发布时间:2020-12-14 05:29:49 所属栏目:Java 来源:网络整理
导读:我正在尝试使用jaxb生成xml.我创建了xsd并生成了 java类. 但是当我生成xml时,我将ge2的??前缀标记为根标记ns2,这不是我想要的. 例如:我想要根标签 report idrep 1/id/report ,但得到 ns2:report..../ns2:report 在生成的java类中,我给了注释为@XmlRootEleme
我正在尝试使用jaxb生成xml.我创建了xsd并生成了 java类.
但是当我生成xml时,我将ge2的??前缀标记为根标记ns2,这不是我想要的.

例如:我想要根标签

<report>
   <id>rep 1</id>
</report>

,但得到

<ns2:report>
....
</ns2:report>

在生成的java类中,我给了注释为@XmlRootElement(name =“report”,namespace =“urn:report”)

有些人可以帮忙

解决方法

如果这是你的班级:
package example;

import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement(name="report",namespace="urn:report")
public class Root {

    private String id;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

}

那么根元素上有一个前缀是有道理的,因为你已经指定“root”元素是命名空间限定的,“id”元素不是.

<ns2:report xmlns:ns2="urn:report">
    <id>123</id>
</ns2:report>

如果您将一个package-info类添加到模型中,则可以使用@XmlSchema注释:

@XmlSchema(
        namespace = "urn:report",elementFormDefault = XmlNsForm.QUALIFIED)
package example;

import javax.xml.bind.annotation.XmlNsForm;
import javax.xml.bind.annotation.XmlSchema;

然后,JAXB实现可以选择利用默认命名空间,但是现在注意所有元素都是命名空间限定的,它们可能与您的XML模式匹配或不匹配:

<report xmlns="urn:report">
    <id>123</id>
</report>

有关JAXB和命名空间的更多信息,请参见:

> http://bdoughan.blogspot.com/2010/08/jaxb-namespaces.html

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读