gpt4 book ai didi

jaxb - 编码时可选的 JAXB xml 属性

转载 作者:行者123 更新时间:2023-12-05 00:32:39 26 4
gpt4 key购买 nike

当我使用 JAXB 编码 java 对象时,我遇到了 xml 元素

<error line="12" column="" message="test" />

但我想要xml如下
<error line="12" message="test" />

如果列值为空,则我需要获取如上所示的 xml,否则我需要获取元素中的列属性。

有什么办法可以得到吗?

最佳答案

一个属性只会被一个空的 String 编码出来。如果相应的字段/属性包含空 String 的值值(value)。如果值为 null,则不会编码该属性。



package forum13218462;

import javax.xml.bind.annotation.*;

@XmlRootElement
public class Root {

@XmlAttribute
String attributeNull;

@XmlAttribute
String attributeEmpty;

@XmlAttribute(required=true)
String attributeNullRequired;

}

演示

package forum13218462;

import javax.xml.bind.*;

public class Demo {

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

Root root = new Root();
root.attributeNull = null;
root.attributeEmpty = "";
root.attributeNullRequired = null;

Marshaller marshaller = jc.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.marshal(root, System.out);
}

}

输出

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<root attributeEmpty=""/>

关于jaxb - 编码时可选的 JAXB xml 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13218462/

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