我正在尝试使用 jaxb 生成 xml。我创建了 xsd 并生成了 java 类。
但是当我生成 xml 时,我在根标记中添加前缀 ns2,这是我不想要的。
例如:我希望根标签是
<report>
<id>rep 1</id>
</report>
, 但得到
<ns2:report>
....
</ns2:report>
在生成的java类中,我给了注释@XmlRootElement(name="report",namespace="urn:report")
有人可以帮忙吗
如果这是你的班级:
package example;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name="report",namespace="urn:report")
public class Root {
private String id;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
}
那么根元素上有一个前缀就有意义了,因为您已指定“root”元素是命名空间限定的,而“id”元素不是。
<ns2:report xmlns:ns2="urn:report">
<id>123</id>
</ns2:report>
如果将 package-info 类添加到模型中,则可以利用 @XmlSchema 注释:
@XmlSchema(
namespace = "urn:report",
elementFormDefault = XmlNsForm.QUALIFIED)
package example;
import javax.xml.bind.annotation.XmlNsForm;
import javax.xml.bind.annotation.XmlSchema;
然后,JAXB 实现可能会选择利用默认名称空间,但请注意,现在所有元素都是名称空间限定的,它们可能与您的 XML 模式匹配,也可能不匹配:
<report xmlns="urn:report">
<id>123</id>
</report>
有关 JAXB 和命名空间的更多信息,请参阅:
- http://bdoughan.blogspot.com/2010/08/jaxb-namespaces.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)