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



我有一个Java类:

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

以及使用JAXBContext::generateSchema方法生成的XML文件:test.xml和XSD文件。

示例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
然而,如果我在许多不同的包中有很多类,或者一些用@XmlElements注释的字段有很多@XmlElement子级。
我需要复制和粘贴namespace = "http://example.com"无数次,这是愚蠢和毫无意义的。是否有一些方法允许我只键入一次名称空间?

您可以尝试将file: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;

最新更新