JAXB XmlAnyElement设置名称空间属性

sch*_*d04 7 java xml xsd jaxb maven-jaxb2-plugin

我有一个简单的Java类,我用JAXB进行注释:

class Foo {
   @XmlAnyElement(lax=true)
   List<Object> any;
}
Run Code Online (Sandbox Code Playgroud)

其中产生以下架构:

<xs:complexType name="foo">
  <xs:sequence>
    <xs:any processContents="lax" maxOccurs="unbounded"/>
  </xs:sequence>
</xs:complexType>
Run Code Online (Sandbox Code Playgroud)

有没有办法为<any>元素设置名称空间属性,以便它生成如下:

<xs:any namespace="##targetNamespace" processContents="lax" maxOccurs="unbounded"/>
Run Code Online (Sandbox Code Playgroud)

小智 1

将 package-info.java 文件插入到您的 foo 类包中,其内容如下:

@javax.xml.bind.annotation.XmlSchema(namespace = "urn:foo:v1", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
package java.ns.foo;
Run Code Online (Sandbox Code Playgroud)