我试图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()
功能的任何提示。
编辑:我已经看到XmlRootElement
andXmlType
注释具有namespace()
方法,这似乎是我所追求的(实际上,它们似乎委托于XmlSchema
提供的package-info.java
)。但是,我无法获得ROOTELEMENT
转换为任何这些类型的实例。