Java 如何使用JAXB将多个名称空间封送到XML根元素
我希望JAXB封送到xml,其中名称空间只出现在根元素中,而不出现在任何其他元素中:Java 如何使用JAXB将多个名称空间封送到XML根元素,java,xml,jaxb,Java,Xml,Jaxb,我希望JAXB封送到xml,其中名称空间只出现在根元素中,而不出现在任何其他元素中: <myroot xmlns="http://www.mysite.com" xmlns:a="http://www.mysite.com/a" xmlns:ab="http://www.mysite.com/ab" xmlns:y="http://www.mysite.com/y"> ... </myroot> 我还有以下包-info.java: @XmlSchema ( na
<myroot xmlns="http://www.mysite.com" xmlns:a="http://www.mysite.com/a" xmlns:ab="http://www.mysite.com/ab" xmlns:y="http://www.mysite.com/y">
...
</myroot>
我还有以下包-info.java:
@XmlSchema
(
namespace="http://www.mysite.com",
elementFormDefault=XmlNsForm.QUALIFIED,
xmlns=
{
@XmlNs(namespaceURI = "http://www.mysite.com", prefix = ""),
@XmlNs(namespaceURI = "http://www.mysite.com/a", prefix = "a"),
@XmlNs(namespaceURI = "http://www.mysite.com/ab", prefix = "ab"),
@XmlNs(namespaceURI = "http://www.mysite.com/y", prefix = "y")
}
)
package com.seastreetinc.rd.nso.jaxb;
import javax.xml.bind.annotation.XmlNs;
import javax.xml.bind.annotation.XmlNsForm;
import javax.xml.bind.annotation.XmlSchema;
JAXB规范说明了什么(没有说明)
JAXB(JSR-222)规范没有涵盖名称空间声明出现的位置或前缀的调用(请参阅:)
JAXB实现的功能
实现使用的一般策略是计算出模型使用的名称空间的最小数量,并在根元素上声明它们。这可能是您在@XmlSchema
注释中声明的内容的子集
更新
NamespacePrefixMapper
扩展可用于控制根元素上的命名空间。有关完整示例,请参见下面链接的答案
@XmlSchema
(
namespace="http://www.mysite.com",
elementFormDefault=XmlNsForm.QUALIFIED,
xmlns=
{
@XmlNs(namespaceURI = "http://www.mysite.com", prefix = ""),
@XmlNs(namespaceURI = "http://www.mysite.com/a", prefix = "a"),
@XmlNs(namespaceURI = "http://www.mysite.com/ab", prefix = "ab"),
@XmlNs(namespaceURI = "http://www.mysite.com/y", prefix = "y")
}
)
package com.seastreetinc.rd.nso.jaxb;
import javax.xml.bind.annotation.XmlNs;
import javax.xml.bind.annotation.XmlNsForm;
import javax.xml.bind.annotation.XmlSchema;