Jaxb java 将命名空间设置为所有元素

Jaxb java set namespace to all elements

我有一个 Java class:

@XmlRootElement(name = "a")
public class a {
    @XmlElementWrapper
    public Component[] components;

    public String content;
}

和一个 XML 文件:test.xml 和 XSD 文件是使用 JAXBContext::generateSchema 方法生成的。

示例XML 文件:

<a xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns="http://example.com"
      xsi:schemaLocation="http://example.com file://...schema.xsd">
</a>

如果我想解组它,我需要将 namespace = "http://example.com" 添加到所有元素。
否则,我将得到 javax.xml.bind.UnmarshalException 作为
但是,如果我在许多不同的包中有很多 class,或者某些用 @XmlElements 注释的字段有很多 @XmlElement 子项。
我需要无数次复制和粘贴namespace = "http://example.com",这是愚蠢且毫无意义的。是否有一些方法允许我只输入一次命名空间?

您可以尝试将文件 package-info.java 添加到您的包中。

@javax.xml.bind.annotation.XmlSchema(namespace = 
"http://webservices.com/myws",
   xmlns = { 
       @javax.xml.bind.annotation.XmlNs(prefix = "ws", 
       namespaceURI="http://webservices.com/myws")
   } 
)
package mypackage;