我正在使用教程在这里 http://www.vogella.com/articles/JAXB/article.html#jaxb用于理解 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 来生成,但我将提供一个XSD
与我的 jar 文件(未打包在内部,而是包含在包含 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
or @XmlElement
注解。
了解更多信息
- http://blog.bdoughan.com/2010/08/jaxb-namespaces.html http://blog.bdoughan.com/2010/08/jaxb-namespaces.html
- http://blog.bdoughan.com/2012/07/jaxb-and-root-elements.html http://blog.bdoughan.com/2012/07/jaxb-and-root-elements.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)