我有一个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;