我是JAXB的新手。我能够填充XML。在我的例子中,我需要我的名称空间前缀为
<set xmlns="www.google.com"
xmlns:myName="www.google.com">而不是
<set xmlns="www.google.com"
xmlns:ns2="www.google.com">我使用了package-info类和@XmlType注解。我是否需要添加任何变量来获得第二个名称空间的所需名称,如“xmlns:MyName”而不是"xmlns:ns2"?
发布于 2012-12-11 18:14:08
如果使用作为JAXB提供程序或JAXB的最新版本,则可以执行以下操作:
包-info
可以在@XmlSchema批注的xmlns属性上使用@XmlNs批注来指定命名空间的前缀。
@XmlSchema(
namespace="www.google.com",
elementFormDefault = XmlNsForm.QUALIFIED,
xmlns={
@XmlNs(namespaceURI = "www.google.com", prefix = ""),
@XmlNs(namespaceURI = "www.google.com", prefix = "myName"),
})
package forum13817126;
import javax.xml.bind.annotation.*;Java模型
下面是一个简单的Java模型,我将在这个示例中使用它。
package forum13817126;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class Set {
}演示代码
下面的演示代码将创建域模型的一个实例并将其编组为XML。
package forum13817126;
import javax.xml.bind.*;
public class Demo {
public static void main(String[] args) throws Exception {
JAXBContext jc = JAXBContext.newInstance(Set.class);
Set set = new Set();
Marshaller marshaller = jc.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.marshal(set, System.out);
}
}输出
下面是运行演示代码的输出。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<myName:set xmlns="www.google.com" xmlns:myName="www.google.com"/>有关详细信息的,请访问
发布于 2012-12-11 18:08:34
您需要在package-info中的@XmlSchema批注上添加xmlns属性。它的值是一个注释数组,为编组程序提供建议的前缀映射。虽然在技术上允许忽略这些建议,但我发现,只要没有冲突(两个不同的包为不同的URI提供相同的前缀),它们通常就会受到尊重。
https://stackoverflow.com/questions/13817126
复制相似问题