我在这里使用教程来了解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
因此,在XSD文件中,targetNamespace将会是de.vogella.xml.jaxb.model 因为上面已将其声明为@XmlRootElement(namespace = "de.vogella.xml.jaxb.model")??
targetNamespace
de.vogella.xml.jaxb.model
@XmlRootElement(namespace = "de.vogella.xml.jaxb.model")
我建议使用包级别@XmlSchema注释为模型指定名称空间限定。程序包级别的注释位于一个特殊的类中package- info,该类包含确切的内容,如下所示。该注释将意味着文档中所有未指定明确命名空间的元素都将使用该命名空间。
@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;
覆盖命名空间
@XmlType
@XmlRootElement
@XmlElement
想要查询更多的信息