您可以执行以下操作:
Java 模型
类型
JAXB 从类和包派生默认名称,因此如果名称与默认名称不同,您只需指定一个名称。此外,您不应将前缀作为名称的一部分,
package forum21674070;
import javax.xml.bind.annotation.*;
@XmlRootElement
public class Type {
@XmlAttribute
protected final String res="http://www.w3.org/2004/02/skos/core#ConceptScheme";
}
包信息
@XmlSchema
注释用于指定命名空间限定。不保证使用@XmlNs
来指定前缀会导致在编组的 XML 中使用该前缀,但 JAXB impls 倾向于这样做(请参阅: http ://blog.bdoughan.com/2011/11/jaxb-and-命名空间前缀.html)。
@XmlSchema(
namespace="http://www.w3.org/2004/02/skos/core#ConceptScheme",
elementFormDefault = XmlNsForm.QUALIFIED,
attributeFormDefault = XmlNsForm.QUALIFIED,
xmlns={
@XmlNs(prefix="rdf", namespaceURI="http://www.w3.org/2004/02/skos/core#ConceptScheme")
}
)
package forum21674070;
import javax.xml.bind.annotation.*;
演示代码
演示
package forum21674070;
import javax.xml.bind.*;
public class Demo {
public static void main(String[] args) throws Exception {
JAXBContext jc = JAXBContext.newInstance(Type.class);
Type type = new Type();
Marshaller marshaller = jc.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.marshal(type, System.out);
}
}
输出
<?xml version="1.0" encoding="UTF-8"?>
<rdf:type xmlns:rdf="http://www.w3.org/2004/02/skos/core#ConceptScheme" rdf:res="http://www.w3.org/2004/02/skos/core#ConceptScheme"/>