gpt4 book ai didi

java - Jaxb 编码 - 从 java 对象获取 xml 中的所有字段

转载 作者:行者123 更新时间:2023-11-30 08:18:55 26 4
gpt4 key购买 nike

我正在使用 JAXB 将 java 对象编码为 XML。我已经从 xsd 生成了所需的 java 对象。我能够按如下所述编码并获取 xml。

<Disk>
<Details>
<status>attached</status>
<size>10000000000</size>
<freeSpace>25600000<freeSpace>
<id>MI45563PO</id>
</Details>
</Disk>

但是 xml 仅包含字段,我在架构中为其设置值和必填字段(默认值)。我需要 xsd 中定义的所有字段(为空)以及我已设置值的字段。

Java 代码:

    Disk disk = new Disk();
Details details = new Details();
details.setSize(100000000);
details .setDetails(details);

JAXBContext context = JAXBContext.newInstance("com.samplefile");

Marshaller marshaller = context.createMarshaller();

marshaller.setProperty("jaxb.formatted.output",Boolean.TRUE);

marshalle.marshal(details ,new FileOutputStream(new
File("C:/test/Sample.xml")));

感谢任何帮助。

最佳答案

你应该加上注释

@XmlElement(nillable=true)

Details 类的所有字段都可以为 null。例如

@XmlElement(nillable=true)
public String getStatus() {
return status;
}

如果该字段包含空值,则输出将为:

<status xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>

关于java - Jaxb 编码 - 从 java 对象获取 xml 中的所有字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29251443/

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