一尘不染

了解JAXB @XmlRootElement批注

java

我在这里使用教程来了解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")??


阅读 216

收藏
2020-12-03

共1个答案

一尘不染

我建议使用包级别@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属性覆盖给定元素的命名空间。

想要查询更多的信息

2020-12-03