gpt4 book ai didi

java - 如何使用 JAXB 将多个 namespace 编码到 XML 根元素

转载 作者:数据小太阳 更新时间:2023-10-29 02:45:13 25 4
gpt4 key购买 nike

我想让 JAXB 编码到 xml,其中 namespace 仅出现在根元素中而不出现在任何其他元素中:

<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>

我已经尝试过包级别的@XmlSchema,但我一定是做错了什么,因为什么都没有出现。

这是我的根元素类:

@XmlRootElement(name="myroot")
@XmlAccessorType(XmlAccessType.FIELD)
public class RootElementClass
{
....
}

我还有以下 package-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) 规范不涵盖 namespace 声明出现的位置或前缀的名称(参见:http://blog.bdoughan.com/2011/11/jaxb-and-namespace-prefixes.html)。

JAXB 实现的作用

实现使用的一般策略是找出模型使用的命名空间的最小数量,并在根元素上声明它们。这可能是您在 @XmlSchema 注释中声明的内容的子集。


更新

NamespacePrefixMapper 扩展可用于控制根元素上的 namespace 。有关完整示例,请参阅下面链接的答案。

关于java - 如何使用 JAXB 将多个 namespace 编码到 XML 根元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22996135/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com