如何判断JAXB元素<myrequest>是否为“空”</myrequest>

时间:2013-11-22 08:47:24

标签: java jaxb

如何以编程方式告诉JAXB元素是否为空?&#34; ?

<fis:MyRequest/>

通常情况下,对于数据,它可能如下所示:

<fis:MyRequest>
    <fis:ABC>X</fis:ABC>
    <fis:XYZ>6000</fis:XYZ>
</fis:MyRequest>

但有时它可能是空的,我想在代码中隔离这些情况。

在这种情况下,很容易检查

if (myRequest.getAbc() == null && myRequest.getXyz() == null) { ... }

但是想象一下,如果有更多的子元素,这将是不切实际的。

我考虑过将myRequest元素生成为一个字符串,然后检查它是否是一个以/>结尾的单个标签,但这似乎是用大象追逐一只蚱蜢(换句话说,过度杀戮)。

是否有一个方便的实用功能坐在某个地方这样做?

提前致谢。

1 个答案:

答案 0 :(得分:1)

鉴于已生成equals()方法(请参阅下面的注释),您可以将JAXB元素与相同元素类型的new实例进行比较。

MyRequest EMPTY_MYREQYEST = new MyRequest();

if (myRequest.equals(EMPTY_MYREQUEST)) { ... }

我认为这种方法没有任何不利之处(?)

注意:从xsd生成java代码时,最有可能需要-Xequals-XhashCode标志