当前位置: 首页 > 知识库问答 >
问题:

理解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来完成,但我将为我的jar文件提供一个XSD(不是打包在里面,而是打包在包含jar文件的文件夹中),以便当我的应用程序启动时,它将验证XML文档是否已被篡改。

因此,在XSD文件中,targetNamespace将是de.vogella。xml。jaxb。模型,因为它在上面被声明为XmlRootElement(namespace=“de.vogella.xml.jaxb.model”)?

共有2个答案

璩慎之
2023-03-14

>

当顶级类或枚举类型用@XmlRootElement注释时,其值在XML文档中表示为XML元素。

按照下面给出的例子来获得更多的想法:

将元素与XML架构类型关联

// Example: Code fragment
 @XmlRootElement
 class Point {
    int x;
    int y;
    Point(int _x,int _y) {x=_x;y=_y;}
 }

 //Example: Code fragment corresponding to XML output
 marshal( new Point(3,5), System.out);


 <!-- Example: XML output -->
 <point>
   <x> 3 </x>
   <y> 5 </y>
 </point>
艾俊晖
2023-03-14

我建议使用包级@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中给定的命名空间
  • 您可以使用注释上的namespace属性覆盖给定元素的命名空间

有关更多信息

  • http://blog.bdoughan.com/2010/08/jaxb-namespaces.html
 类似资料:
  • 问题内容: 我在这里使用教程来了解JAXB。 当作者开始创建文档的根时,作者开始如下: 尽管我将手动生成类而不是让Eclipse生成类,但我将提供一个jar文件(未打包在其中,而是在包含jar文件的文件夹中),以便在我的应用程序启动时验证XML文档是否已被篡改。 因此,在XSD文件中,将会是 因为上面已将其声明为?? 问题答案: 我建议使用包级别注释为模型指定名称空间限定。程序包级别的注释位于一个

  • 问题内容: 我正在尝试从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以不同的方式显示,如下所示: 知道我该怎么做吗?我认为问题出在我的架构上,但我将其用于编组: 任何想法如何解决这一问题?谢谢! 问题答案: 试试这个: 从文档中:

  • 我们试图使用gradle、xsd和xjc生成JAXB类,JAXB类应该具有XmlRootElement注释,以便可以将其作为web服务响应公开。我们正在跟踪这个链接http://azagorneanu.blogspot.com/2011/09/configure-maven-to-generate-classes.html,这很有帮助,但我们无法找到一个只有gradle的特定示例。所以我们想出了一

  • 根据Camel文档,在这种情况下,可以将JaxbDataFormat设置为'fragement(true) 不幸的是我还是有同样的例外。 是否有一种方法来配置不同的JaxbDataFormat,即定义作为根元素的JAXBElement,就像我在Java中所做的那样 [NA:1.8.0_25]在java.lang.thread.run(thread.java:745)[NA:1.8.0_25]原因: