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

了解JAXB @XmlRootElement批注

涂羽
2023-03-14
问题内容

我在这里使用教程来了解JAXB。

当作者开始创建文档的根时,作者开始如下:

//This statement means that class "Bookstore.java" is the root-element of our example
@XmlRootElement(namespace = "de.vogella.xml.jaxb.model")
public class Bookstore {
       ...
}

尽管我将手动生成类而不是让Eclipse生成类,但我将提供一个XSDjar文件(未打包在其中,而是在包含jar文件的文件夹中),以便在我的应用程序启动时验证XML文档是否已被篡改。

因此,在XSD文件中,targetNamespace将会是de.vogella.xml.jaxb.model
因为上面已将其声明为@XmlRootElement(namespace = "de.vogella.xml.jaxb.model")??


问题答案:

我建议使用包级别@XmlSchema注释为模型指定名称空间限定。程序包级别的注释位于一个特殊的类中package- info,该类包含确切的内容,如下所示。该注释将意味着文档中所有未指定明确命名空间的元素都将使用该命名空间。

org / example / foo / package-info.java

@XmlSchema(
    namespace = "http://www.example.org/foo",
    elementFormDefault = XmlNsForm.QUALIFIED)
package org.example.foo;

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

覆盖命名空间

  • 您可以@XmlSchema使用@XmlType注释覆盖类中所有属性的命名空间。
  • 您可以使用@XmlRootElement@XmlElement批注中的namespace属性覆盖给定元素的命名空间。

想要查询更多的信息

  • http://blog.bdoughan.com/2010/08/jaxb-namespaces.html
  • http://blog.bdoughan.com/2012/07/jaxb-and-root-elements.html


 类似资料:
  • 我在这里使用教程来理解JAXB。 当编写器开始创建文档的根时,编写器开始如下: 尽管我将手动生成我的类,而不是让Eclipse来完成,但我将为我的jar文件提供一个(不是打包在里面,而是打包在包含jar文件的文件夹中),以便当我的应用程序启动时,它将验证XML文档是否已被篡改。 因此,在XSD文件中,targetNamespace将是de.vogella。xml。jaxb。模型,因为它在上面被声明

  • 问题内容: 我正在尝试从FpML(金融产品标记语言)4.5版生成Java类。生成了大量代码,但是我不能使用它。尝试序列化一个简单的文档,我得到以下信息: 实际上,没有任何类具有@XmlRootElement批注,那么我该怎么做呢?我将xjc(JAXB 2.1)指向fpml-main-4-5.xsd,其中包括所有类型。 问题答案: v

  • 我无法在不了解根元素的情况下取消 XML 的编组。例如。 或 等等... 我想在类上映射解组结果,例如: 我总是需要修复< code>@XmlRootElement。< br >我搜索了如何在运行时设置@XmlRootElement,但没有成功。知道吗? 我在Spring Batch上下文中,我可以使用我选择的解组器。 注意:我不能使用这里显示的< code>@XmlElementDecl或< c

  • 问题内容: 我需要一些有关JAXB Annotations的帮助,但找不到好的文档可以帮助我解决这个问题。 我有一个要编入XML的类。我的班级看起来像这样: 召回类如下所示: 因此,它将产生以下XML输出: 但是我希望ArrayList以不同的方式显示,如下所示: 知道我该怎么做吗?我认为问题出在我的架构上,但我将其用于编组: 任何想法如何解决这一问题?谢谢! 问题答案: 试试这个: 从文档中:

  • 问题内容: 我是一个Android初学者。在尝试管理活动生命周期的代码时,我遇到了新问题。 我对代码理解得很好,但是在ActionBar SuppressLint中却给出了错误。当我双击它时,正在添加。这是什么意思? 问题答案: 是Android Lint工具使用的注释。 当代码中的某些内容不是最佳的或可能崩溃时,Lint会告诉您。通过传递,您将抑制所有警告,这些警告会告诉您是否正在使用在您的设备

  • 问题内容: 从官方的hibernate文档中: @ org.hibernate.annotations.Type会覆盖所使用的默认hibernate类型:由于Hibernate可以正确推断出该类型,因此通常不必这样做 文档中有一个示例: 我不明白 我们声明,但是方法的返回值具有类型。 我希望在类型注释中声明的类型和返回值的类型应该是相同的类型。 有人无法解释在注解中声明的类型的实际用途。为什么它与