当前位置: 首页 > 面试题库 >

Jaxb生成的xml-根元素前缀存在问题

靳祺然
2023-03-14
问题内容

我正在尝试使用jaxb生成xml。我创建了xsd并生成了Java类。但是,当我生成xml时,我会将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;
    }

}

然后就可以知道根元素上有一个前缀,因为您已指定“根”元素是名称空间限定的,而“ 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


 类似资料:
  • 我有以下问题,当我生成XML文件时,Jaxb给根元素的名称空间添加前缀,我不知道如何跳过它。 我有软件包信息.java文件 我有根元素 结果我得到了 如果没有@XmlNs,它的工作方式也是一样的,将命名空间添加到@XmlRoolElement也没有帮助。它会有什么问题?

  • 我正在使用JAXB生成用于编组/解组XML的类。问题是父类的命名空间仅适用于XML中的父元素,而不适用于JAXB注释类中使用的子类。 我不知道我犯了什么错误。下面是我的xsd和xml以及类。 XSD: 项目Responses.xsd JAXB类 项目响应.java 项目响应.java Money.java XML输出: 包信息。java有以下条目 货币类别不在同一个包中。如何将其包含在 Jaxb

  • 如何使用JAXB生成以下结构?在我的例子中,我有一个动态属性列表,它可能有3种类型:整数、字符串或列表。但是,列表属性具有嵌套元素。我怎样才能做到这一点?

  • jaxb 将所有标签分组为一个,我需要每个标签都有自己的命名空间。 具有: 需要: 将命名空间添加到@XmlElement没有帮助 包装信息:

  • 我正在从中生成大量Java文件http://www.ncpdp.org的XSD文件(仅对成员可用)。生成它们之后,我希望在Spring控制器中使用它们,但在将响应转换为XML时遇到问题。 我已经尝试返回元素本身,以及JAXBElement 这是我的控制器: 我试图创建一个MvcConfig来覆盖Spring Boot的MVC配置,但它似乎不起作用。 我需要做什么才能让Spring MVC将我生成的

  • 我成功地从多个wsdlendpoint使用maven-jaxb2-plugin生成java类。 这是一次执行: 这里的问题是,我有多个执行,因此生成多个类,每个执行将类保存在不同的包中。 一个B类abiret2.java在多个包中生成(因此,它来自多个wdsls) 当我执行使用这个存根的代码时,例如在单元测试中,我会得到以下异常: 我发现了一些可能的修复方法,比如在args标记下添加配置 Arg,