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

前端之家收集整理的这篇文章主要介绍了java – Jaxb生成的xml – 根元素前缀的问题前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试使用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

原文链接:https://www.f2er.com/java/122413.html

猜你在找的Java相关文章