我正在尝试将对象编组为XML,并且我的命名空间前缀有问题(我不想要任何前缀)。
我正在使用bindigs文件来自定义生成的类。 生成的package-info.java文件包含以下内容:
@javax.xml.bind.annotation.XmlSchema(namespace = "http://www.test.com", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED, xmlns = {
@javax.xml.bind.annotation.XmlNs(namespaceURI = "http://www.test.com", prefix = "")})
package com.test;
因此,前缀设置为“”,但是当生成XML时,我有一个生成的前缀。 如果我为前缀使用另一个值(不同于空字符串),则使用正确的前缀生成XML。
答案 0 :(得分:1)
使用最新的JAXB,您必须将QUALIFIED设置为XmlSchema注释的elementFormDefault字段。像这样:
@XmlSchema (
elementFormDefault= XmlNsForm.QUALIFIED,
...)
否则,JAXB将添加自动前缀(ns1,ns2,...)
答案 1 :(得分:0)
您的JAXB (JSR-222)实现并不保证它将使用@XmlSchema
注释中指定的前缀。最新版本的EclipseLink JAXB (MOXy)将会JAXB RI。
JAXB RI提供NamespacePrefixMapper
扩展,MOXy现在支持该扩展,以便更好地控制所使用的前缀。
了解更多信息