java - JAXB 在编码 java 时将 xmlns 添加到元素中

标签 java jaxb marshalling

如何在使用 JAXB 编码 Java 对象时将 xmlns 添加到元素中,所以结果应该是这样的

<R>  
    <A xmlns:p2="test" p2:type="type">
        some value
    </A>
</R>

例如我的 Java 实体类是:

@XmlRootElement
public class R {

    private String a;

    public String getA() {
        return a;
    }

    @XmlElement(name="A")
    public void setA(String a) {
        this.a = a;
    }
}

试图将命名空间添加到 XmlElement 中,但结果不是我所期望的。请提供任何帮助。

最佳答案

在您的示例中,type 属性是命名空间限定的。您可以在 @XmlAttribute 注释上为其设置 namespace 参数。

R

import javax.xml.bind.annotation.*;

@XmlRootElement(name="R")
@XmlAccessorType(XmlAccessType.FIELD)
public class R {

    @XmlElement(name="A")
    private A a;

}

一个

import javax.xml.bind.annotation.*;

@XmlAccessorType(XmlAccessType.FIELD)
public class A {

    @XmlAttribute(namespace="test")
    private String type;

    @XmlValue
    private String value;

}

了解更多信息

关于java - JAXB 在编码 java 时将 xmlns 添加到元素中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17825574/

相关文章:

java - EditText 总是返回空值

java - GridBagLayout 中的组件放在中心,不占用所有可用空间

java - @XmlSchema : "annotation type not applicable to this kind of declaration"

gradle - 在gradle应用程序中为wsdl和xsd修改生成的Java类的程序包名称

c# - PInvoke - 试图读取或写入 protected 内存。这通常表明其他内存已损坏

c# - 将 C++ 结构数组编码为 C#

java - 使用 Java 实现 DNS 服务器,并使用 Dynamo DB 作为后端数据存储

java - Jaxb如何抑制tagName但获取值

python - 从 bash 到 GO 服务器的 REST post 查询有效但对于 Python 失败

java - 有关 Cloud Endpoints 返回类型的更多信息