使用 JAXB,我将我的自定义对象编码到 Xml 中。
考虑一个像这样的对象:
@XmlRootElement(name = "Config")
public class Config {
@XmlElement(name = "projectVersion")
private String version;
如果 version 的值为 null,那么我将在 setter 中手动设置它。
this.version=version==null?"":version;
但是我得到的标签输出如下:
</version>
但是客户要求输出像
<version></version>
我怎样才能实现它?除了在 setter 方法中设置空白空间“”之外?
谢谢。
最佳答案
为什么您的客户需要它?出于什么原因?
<version/>
和<version></version>
是严格等价的。这些都是空元素,句号。
由于从规范的角度来看,这两种语法是等效的,因此这纯粹取决于实现。尝试编码到 new IndentingXMLStreamWriter(file)
和/或设置marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE)
在编码器上。
关于java - JAXB : Xml tags when empty,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40928430/