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