java – Jaxb生成的xml – 根元素前缀的问题

前端之家收集整理的这篇文章主要介绍了java – Jaxb生成的xml – 根元素前缀的问题前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试使用jaxb生成xml.我创建了xsd并生成java类.
但是当我生成xml时,我将ge2的​​前缀标记为根标记ns2,这不是我想要的.

例如:我想要根标签

  1. <report>
  2. <id>rep 1</id>
  3. </report>

,但得到

  1. <ns2:report>
  2. ....
  3. </ns2:report>

生成的java类中,我给了注释为@XmlRootElement(name =“report”,namespace =“urn:report”)

有些人可以帮忙

解决方法

如果这是你的班级:
  1. package example;
  2.  
  3. import javax.xml.bind.annotation.XmlRootElement;
  4.  
  5. @XmlRootElement(name="report",namespace="urn:report")
  6. public class Root {
  7.  
  8. private String id;
  9.  
  10. public String getId() {
  11. return id;
  12. }
  13.  
  14. public void setId(String id) {
  15. this.id = id;
  16. }
  17.  
  18. }

那么根元素上有一个前缀是有道理的,因为你已经指定“root”元素是命名空间限定的,“id”元素不是.

  1. <ns2:report xmlns:ns2="urn:report">
  2. <id>123</id>
  3. </ns2:report>

如果您将一个package-info类添加到模型中,则可以使用@XmlSchema注释:

  1. @XmlSchema(
  2. namespace = "urn:report",elementFormDefault = XmlNsForm.QUALIFIED)
  3. package example;
  4.  
  5. import javax.xml.bind.annotation.XmlNsForm;
  6. import javax.xml.bind.annotation.XmlSchema;

然后,JAXB实现可以选择利用默认命名空间,但是现在注意所有元素都是命名空间限定的,它们可能与您的XML模式匹配或不匹配:

  1. <report xmlns="urn:report">
  2. <id>123</id>
  3. </report>

有关JAXB和命名空间的更多信息,请参见:

> http://bdoughan.blogspot.com/2010/08/jaxb-namespaces.html

猜你在找的Java相关文章