我有一个输入的XML,它在这一行上:
<Holding id="12">
<Policy>
<HoldingForm tc="1">Individual</HoldingForm>
<PolNumber>848433</PolNumber>
<LineOfBusiness tc="1">Life</LineOfBusiness>
<CarrierCode>67644</CarrierCode>
</Policy>
</Holding>
我的XML操作取决于<PolNumber>
是否有值(该元素是模式中的可选元素)。我正在使用Mule 3.3 xpath
评估器来执行此操作,我的XPath表达式如下:
<expression-filter expression="#[xpath('//acord:Holding/acord:Policy/acord:PolNumber').text != empty]"/>
只要存在<PolNumber>
元素或<PolNumber/>
是空元素,这将正常工作。但如果不存在<PolNumber>
,上述表达式会抛出异常。我尝试使用XPath boolean函数,但对于<PolNumber/>
它返回true
。是否有更好的方法来检查元素是否存在且非空?编辑:这是我的mule配置中命名空间管理器的配置。
<xm:namespace-manager includeConfigNamespaces="true">
<xm:namespace prefix="acord" uri="http://ACORD.org/Standards/Life/2" />
<xm:namespace prefix="soap" uri="http://schemas.xmlsoap.org/soap/encoding/" />
</xm:namespace-manager>
<Holding><Policy><PolNumber></PolNumber><Policy></Holding>
返回true。我不知道如何在注释中显示新行,但我的意图是在<PolNumber>
和</PolNumber>
之间有一个换行符。 - Charu Khuranaboolean(//acord:Holding/acord:Policy/acord:PolNumber/text()[normalize-space()][1])
- Dimitre Novatchev