2016-09-09 2 views
0

Как проверить значение NaN с помощью xpath3 в муле.Как проверить NaN в муле

Я пытался это сделать, но не получить результат правильного

#[xpath3('total',payload,'NUMBER')!='NaN'?xpath3('total',payload,'NUMBER'):0] 

Но не работает

Как я могу проверить значение NaN в мул?

ответ

0

Попробуйте использовать это или экземпляр, например #[xpath3('total',payload,'NUMBER') is java.lang.Number ? xpath3('total',payload,'NUMBER') : 0]

На основании дальнейших испытаний, используя следующий пример:

<?xml version="1.0" encoding="UTF-8"?> 
<data> 
    <total>100</total> 
</data> 

мы можем использовать IsNaN() метод, потому что полезная нагрузка равна java.lang.Double. Поэтому мы можем использовать следующую MEL: #[xpath3('//total',payload,'NUMBER').isNaN() ? 0 : xpath3('//total',payload,'NUMBER')]

Это можно проверить с помощью следующего простого потока:

<flow name="simpleFlow"> 
    <http:listener config-ref="HTTP_Listener_Configuration" path="/" doc:name="HTTP"/> 
    <logger message="#[xpath3('//total',payload,'NUMBER').isNaN() ? 0 : xpath3('//total',payload,'NUMBER')]" level="INFO" doc:name="Logger"/> 
</flow> 

Измените значение общего поля с нечисловой для целей тестирования, например: <data><total>hundred</total></data>

+0

Не работает .. Я получил эту ошибку: поток протокола входящего потока данных (TDS) удаленной процедуры (RPC) неверен. Параметр 15 (""): Приведенное значение не является допустимым экземпляром типа float данных. Проверьте исходные данные на недопустимые значения. Примером недопустимого значения являются данные числового типа со шкалой, превышающей точность. (Com.microsoft.sqlserver.jdbc.SQLServerException). Полезная нагрузка сообщения имеет тип: ElementNSImpl (org.mule.api.MessagingException) – user3855589