缺少JAXB名称空间前缀

我已经从XSD生成了Java类,从解组的角度来看,一切正常。

但是,当我从JAXB课程编组时,我得到以下内容:

   Sample . . .  

但是我需要

    Sample . . . 

我怎样才能从Java控制它?

非常感谢

您可以在package-info类上使用@XmlSchema批注为命名空间分配前缀:

 @XmlSchema( namespace = "http://poc.cmc.com/ScreenLayout", elementFormDefault = XmlNsForm.QUALIFIED, xmlns={@XmlNs(prefix="ns0", namespaceURI="http://poc.cmc.com/ScreenLayout")}) package your.package; import javax.xml.bind.annotation.*; 

不能发布这个评论!

因为消费应用程序非常愚蠢并且需要前缀

在这种情况下,哑应用程序并不真正消耗xml。 请查看此链接http://bdoughan.blogspot.com/2010/08/jaxb-namespaces.html并使用命名空间选项。 特别

 @XmlSchema ( xmlns = { @javax.xml.bind.annotation.XmlNs(prefix = "ns1", namespaceURI="http:test"), @javax.xml.bind.annotation.XmlNs(prefix = "xsd", namespaceURI="http:www.w3.org2001XMLSchema") }, namespace = "http:test", elementFormDefault = XmlNsForm.UNQUALIFIED, attributeFormDefault = XmlNsForm.UNSET ) 

在package-info.java文件中使用。

 @XmlType(namespace="http://www.example.org/type") 

用于类声明

 @XmlElement(namespace="http://www.example.org/property") 

用于财产。

某些组合或这些选项中只有一个可以为您提供所需的组合。 但是,当您从有效的xml移动到必须在所有元素上包含特定名称空间前缀的xml时,您应该理解您正在进行一场艰苦的战斗。

根据XML规范,两个xml是相同的,因为xmlns =“”定义了适用于当前和所有子元素的默认命名空间。 在两种情况下,XML解析器都应该为您提供相同的DOM或SAX