У меня есть входной 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, но он возвращает true
для <PolNumber/>
. Есть ли лучший способ проверить, присутствует ли элемент и не пуст?
EDIT:
Это конфигурация менеджера пространства имен в моей конфигурации 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>