2011-09-19 224 views
1

我认为这个问题应该快速且容易,对于您的某些人更有经验的JAXB'ers。我只需要检查是否存在子元素,因为我正在解组一个XML文件。JAXB - 检查是否存在子元素

目前我得到的java.lang.NullPointerException错误,我认为这是因为我试图创建一个不存在的对象(子元素)。这是一个简单的例子。

<Meter> 
    <MeterSessionInput> 
    <MeterSessionOutput> 
     <MeterSessionOutputOptical> 

的MeterSessionOutputOptical孩子可以存在,但并不一定如此。我想在尝试声明其对象的对立部分之前检查元素是否存在。

+0

我确实找到了一种方式,但也许别人可能会给我一个更好的方式。在MeterSessionOutput对象中,获取MeterSessionOutputOptical实例的方法可以通过简单的if语句进行评估。 'MeterSessionOutput mso = meter.getMeterSessionOutput(); if(mso.getMeterSessionOuputOptical()!= null){....}' – TyC

+2

你打什么'NPE'?如果'MeterSessionOutputOptical'元素不存在,那么你的JAXB实现将不会将其作为一个对象来实现。 –

+0

@BlaiseDoughan当我尝试创建'MeterSessionOutputOptical'实例而不检查子元素是否存在时'NPE'。 XML文件中有大量的“米”,我正在循环遍历它们。一些有MeterSessionOutputOptical,有些没有。 – TyC

回答

3

您的评论是答案。只需使用if语句对子元素执行空检查即可。无论如何,您应该这样做,除非您使用xsd并强制子元素元素在绑定时存在。