我使用ESB将XML消息转换为CEP http接收器,XML:
<result>
<event>
<tag>0101A01B001</tag>
<time>10:00:01</time>
<value>30.45</value>
</event>
<event>
<tag>0101A01B001</tag>
<time>10:00:02</time>
<value>33.7</value>
</event>
<event>
<tag>0101A01B001</tag>
<time>10:00:03</time>
<value>23.4</value>
</event>
<event>
<tag>0101A01B001</tag>
<time>10:00:04</time>
<value>33.15</value>
</event>
</result>
CEP中的http接收器:
<?xml version="1.0" encoding="UTF-8"?>
<eventReceiver name="recv_dss1" statistics="disable" trace="enable" xmlns="http://wso2.org/carbon/eventreceiver">
<from eventAdapterType="http">
<property name="transports">all</property>
</from>
<mapping customMapping="enable" type="xml">
<property>
<from xpath="/result/data/tag"/>
<to name="tag" type="string"/>
</property>
<property>
<from xpath="/result/data/time"/>
<to name="time" type="long"/>
</property>
<property>
<from xpath="/result/data/value"/>
<to name="value" type="double"/>
</property>
</mapping>
<to streamName="dss_stream3" version="1.0.0"/>
</eventReceiver>
http接收器每次只接收第一个“事件”节点,那么如何配置接收器可以一次接收所有“事件”节点?
答案 0 :(得分:1)
在配置中,您需要配置“父选择器XPath表达式”以指示事件的父元素,在本例中为/result
。
然后,应该从父标签引用事件的元素,例如, /data/time
有关详细信息,请参阅WSO2 CEP 4.1 XML输入映射文档:here