среда, 22 октября 2014 г.

Выпарсиватель на JavaScript

HTML, который пришёл в письме содержит вместо угловых скобок тэгов заменители. Тэг <td> выглядит как &lt;td&gt;

Извлечь нужное значение при помощи XPath не удаётся.
//m:td
https://docs.wso2.com/display/ESB481/Synapse+XPath+Variables
http://www.w3schools.com/xpath/default.asp

Если речь об одном числе, то можно использовать медиатор Script и разобрать в нём почтовое сообщение при помощи регулярного выражения.

https://docs.wso2.com/display/ESB481/Script+Mediator

<script language="js"> 
var f1TaskId = mc.getPayloadXML().text().match(/TaskID=(\d+)/m)[1]; 
mc.setProperty('F1TaskId', f1TaskId); 
print(f1TaskId);
</script>

<log>
      <property name="F1TaskId" expression="get-property('F1TaskId')"/> 

</log>

Здесь из контекста SOAP-сообщения mc мы извлекаем собственно его содержимое методом getPayloadXML. Получаем объект XML c единственным элементом, в котором сидит HTML письма. Извлекаем из объекта строку методом text и применяем к ней регулярное выражение с помощью match. Из массива найденных вариантов берём второй с индексом 1. Это ID задачи, ограниченный скобками внутри регулярного выражения - (\d+).

Далее создаём новое свойство в контексте SOAP-сообщения методом setProperty. Это равноценно использованию медиатора Property.

В следующих медиаторах мы можем получить извлечённый из текста письма идентификатор задачи через get-expression, как продемонстрировано медиатором Log.

Комментариев нет:

Отправить комментарий