我正在尝试使用jaxb生成xml.我创建了xsd并生成了
java类.
但是当我生成xml时,我将ge2的前缀标记为根标记ns2,这不是我想要的.
但是当我生成xml时,我将ge2的前缀标记为根标记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和命名空间的更多信息,请参见: