我试图schemaLocation在编组生成的xjc类实例时正确输出属性。根元素类如下所示:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"rootElement"
})
@XmlRootElement(name = "ROOTELEMENT")
public class ROOTELEMENT {
// Members
}
我看到package-info.java包中有一个类,所有生成的类都在其中,内容如下:
@javax.xml.bind.annotation.XmlSchema(
namespace = "http://my.own.namespace",
elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
package my.generated.classes.package;
JAXB XJC 代码生成的答案——Marshaller 生成的 xml 中缺少“schemaLocation”建议设置 Marshaller.JAXB_SCHEMA_LOCATION属性,它确实有效:
marshaller.setProperty(Marshaller.JAXB_SCHEMA_LOCATION, "http://my.own.namespace my_schema.xsd");
但我想避免输入命名空间,如:
String namespace = getNamespace(rootElementInstance);
marshaller.setProperty(Marshaller.JAXB_SCHEMA_LOCATION, namespace + " my_schema.xsd");
我将不胜感激有关如何实现该getNamespace()功能的任何提示。
编辑:我已经看到XmlRootElementandXmlType注释具有namespace()方法,这似乎是我所追求的(实际上,它们似乎委托于XmlSchema提供的package-info.java)。但是,我无法获得ROOTELEMENT转换为任何这些类型的实例。