java - 如何使用 JAXB 创建没有值的 XmlElement

标签 java xml jaxb xmlelement

想要使用 JAXB 创建以下 XML 元素,无值(内容),无结束元素名称,仅结束“/”:

 <ElementName attribute1="A" attribute2="B"" xsi:type="type" xmlns="some_namespace"/> 

尝试以下操作

@XmlAccessorType(XmlAccessType.FIELD)                                  

public class ElementName {
@XmlElement(name = "ElementName", nillable = true)
protected String value;
@XmlAttribute(name = "attribute1")
protected String attribute1;
@XmlAttribute(name = "attribute2")
protected String attribute2;
}

如下构造该类型的对象时,出现异常

ElementName element = new ElementName();

正确的做法是什么?

最佳答案

如果您想将 value 设置为 nullElementName 来实现它,请删除 nillable 属性。如何生成 XML 有效负载的简单示例:

import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

public class JaxbApp {

    public static void main(String[] args) throws Exception {
        JAXBContext jaxbContext = JAXBContext.newInstance(ElementName.class);

        ElementName en = new ElementName();
        en.attribute1 = "A";
        en.attribute2 = "B";
        en.value = null;

        Marshaller marshaller = jaxbContext.createMarshaller();
        marshaller.marshal(en, System.out);
    }
}

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

    @XmlElement(name = "ElementName")
    protected String value;
    @XmlAttribute(name = "attribute1")
    protected String attribute1;
    @XmlAttribute(name = "attribute2")
    protected String attribute2;
}

打印:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><ElementName attribute1="A" attribute2="B"/>

关于java - 如何使用 JAXB 创建没有值的 XmlElement,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55229920/

相关文章:

java - 什么特性对应于 Java 中的 'synchronized'?

java - 尝试使用 Eclipse 制作我的第一个应用程序时出错

java - 从菜单项打开 Activity

xml - 如何记录 XML 模式?

Android R.java 没有被正确识别

java - jaxb 解码子 @XmlIDREF

java - JAXB XML 解码器错误。获取所有对象的空值

java - 使用 REST 从 Spring MVC Controller 返回 XML

java - 我如何调用线程本身?

java - 检查 Internet 连接的可用性 + 在 2 个线程之间通信