Jaxb 如何使用自定义名称空间前缀
我是JAXB的新手。我能够填充XML。在我的例子中,我需要名称空间前缀作为Jaxb 如何使用自定义名称空间前缀,jaxb,Jaxb,我是JAXB的新手。我能够填充XML。在我的例子中,我需要名称空间前缀作为 <set xmlns="www.google.com" xmlns:myName="www.google.com"> 而不是 <set xmlns="www.google.com" xmlns:ns2="www.google.com"> 我使用了packageinfo类和@XmlType注释。我是否需要添加任何变量来获得第二个名称空间(如“xmlns:MyName”而不是“
<set xmlns="www.google.com"
xmlns:myName="www.google.com">
而不是
<set xmlns="www.google.com"
xmlns:ns2="www.google.com">
我使用了
packageinfo
类和@XmlType
注释。我是否需要添加任何变量来获得第二个名称空间(如“xmlns:MyName”而不是“xmlns:ns2”)所需的名称“?您需要在包信息
中的@XmlSchema
注释上添加xmlns
属性。它的值是一个注释数组,为封送拆收器提供建议的前缀映射。虽然技术上允许忽略这些建议,但我发现只要没有冲突(两个不同的包为不同的URI建议相同的前缀),它们通常都会得到尊重。如果您使用的是JAXB提供商或JAXB RI的最新版本,则可以执行以下操作:
套餐信息
您可以使用@XmlSchema
注释的XmlNs
属性上的@XmlNs
注释来指定命名空间的前缀
@XmlSchema(
namespace=“www.google.com”,
elementFormDefault=XmlNsForm.QUALIFIED,
xmlns={
@XmlNs(namespaceURI=“www.google.com”,前缀=”),
@XmlNs(namespaceURI=“www.google.com”,prefix=“myName”),
})
包装为13817126;
导入javax.xml.bind.annotation.*;
Java模型
下面是一个简单的Java模型,我将在本例中使用它
用于UM13817126的包;
导入javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
公共类集{
}
演示代码
下面的演示代码将创建域模型的实例并将其封送到XML
用于UM13817126的包;
导入javax.xml.bind.*;
公开课演示{
公共静态void main(字符串[]args)引发异常{
JAXBContext jc=JAXBContext.newInstance(Set.class);
集合=新集合();
Marshaller=jc.createMarshaller();
setProperty(marshaller.JAXB_格式化的_输出,true);
封送员。封送员(集合、系统、输出);
}
}
输出
下面是运行演示代码的输出
了解更多信息