我正在使用这里的教程来了解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.model,因为它在上面声明为@XmlRootElement(namespace="de.vogella.xml.jaxb.model")。
package-info
类并根据需要修改上述内容?太棒了!我会研究一下你说的内容,但是我的原始问题呢? :) 我的推断正确吗? - An SO Userde.vogella.xml.jaxb.model
是目标命名空间,定义了bookstore
元素。问题在于类不会继承@XmlRootElement
注释中指定的命名空间,因此它们将生成到另一个XML模式中。 - bdoughanelementFormDefault
没有设置为qualified
?噢,模式也将手写。 - An SO User@XmlRootElement
注解中指定的命名空间只适用于该元素。@XmlType
注解中指定的命名空间参数根据@XmlSchema
注解中指定的 elementFormDefault 应用于类中的属性。 - bdoughanJAXB
。所以我首先决定进行验证。但是它没有通过验证。更多信息请参见:http://stackoverflow.com/questions/16615773/sax-parsing-through-a-jar-file-declares-xml-document-invalid - An SO User