如何在JAXB解组后检查元素是否存在?(含自闭合标签场景)
检查XML自闭合元素
的存在性return (<Success />)
嘿,这个问题其实很好解决,结合你给出的JAXB代码,我们可以通过简单的null检查来判断<Success />元素是否存在,具体思路和方法如下:
核心原理:当JAXB把XML解组为
ParentClass对象时,如果XML中存在<Success />(不管是自闭合标签还是空内容的<Success></Success>),它会自动创建一个Success类的实例并赋值给success字段;如果这个元素不存在,success字段会保持为null。代码实现:
首先你需要给ParentClass添加success字段的getter方法(当前字段是private的,外部无法直接访问):public class ParentClass { @XmlElement private Success success; // 添加getter方法 public Success getSuccess() { return success; } public static class Success { } }然后在解组完成后,通过null检查判断元素是否存在:
// 假设已经完成XML解组得到parentObj对象 ParentClass parentObj = ...; if (parentObj.getSuccess() != null) { System.out.println("<Success />元素存在"); } else { System.out.println("<Success />元素不存在"); }补充说明:
你的Success类是一个空类(没有任何属性或方法),但JAXB依然会正常处理——只要XML中出现该元素,就会实例化这个类。不需要额外的注解配置,默认的@XmlElement就足够应对这种场景。
内容的提问来源于stack exchange,提问作者Bharat Nanwani
相关产品推荐
相关产品推荐

