Jak powiedzieć, używając XPath, jeśli element jest obecny i nie jest pusty?
W tym wierszu mam coś wejściowego XML:
<Holding id="12">
<Policy>
<HoldingForm tc="1">Individual</HoldingForm>
<PolNumber>848433</PolNumber>
<LineOfBusiness tc="1">Life</LineOfBusiness>
<CarrierCode>67644</CarrierCode>
</Policy>
</Holding>
Moje manipulowanie tym XML zależy od tego, czy<PolNumber>
(jest to opcjonalny element w schemacie) ma wartość lub nie. Używam Mule 3.3xpath
oceniający, aby to zrobić, a moje wyrażenie XPath wygląda tak:
<expression-filter expression="#[xpath('//acord:Holding/acord:Policy/acord:PolNumber').text != empty]"/>
To działa dobrze tak długo<PolNumber>
element jest obecny lub<PolNumber/>
jest pustym elementem. Ale jeśli<PolNumber>
jest nieobecny, powyższe wyrażenie rzuca wyjątek.
Próbowałem użyćXPath boolean funkcja, ale wracatrue
dla<PolNumber/>
. Czy istnieje lepszy sposób sprawdzenia, czy element jest obecny i nie jest pusty?
EDYTOWAĆ:
To jest konfiguracja menedżera przestrzeni nazw w mojej konfiguracji muła
<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>