我正在使用WSO2企业服务总线来处理和分发HL7。我想根据它的内容过滤HL7。ESB中的消息传递是:
<?xml version='1.0' encoding='utf-8'?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<hl7:message xmlns:hl7="http://wso2.org/hl7">
<ADT_A01 xmlns="urn:hl7-org:v2xml">
<MSH>
<MSH.1>|</MSH.1>
<MSH.2>^~\&</MSH.2>
<MSH.3>
<HD.1>HL7Soup</HD.1>
</MSH.3>
<MSH.4>
<HD.1>Instance1</HD.1>
</MSH.4>
<MSH.5>
<HD.1>HL7Soup</HD.1>
</MSH.5>
<MSH.6>
<HD.1>Instance2</HD.1>
</MSH.6>
<MSH.7>
<TS.1>200808181126</TS.1>
</MSH.7>
<MSH.8>SECURITY</MSH.8>
<MSH.9>
<MSG.1>ADT</MSG.1>
<MSG.2>A04</MSG.2>
</MSH.9>
<MSH.10>MSG00001</MSH.10>
<MSH.11>
<PT.1>P</PT.1>
</MSH.11>
<MSH.12>
<VID.1>2.5.1</VID.1>
</MSH.12>
</MSH>
...................
</ADT_A01.INSURANCE>
</ADT_A01></hl7:message></soapenv:Body></soapenv:Envelope>我想根据内容过滤HL7邮件。如果ADT OK,则将其删除。我尝试使用下面的过滤器中介器,但它不起作用。它总是转到else分支:
<filter regex=".*ADT.*" source="//MSG.1[1]">
<then>
<log level="custom">
<property name="ADT" value="Oui"/>
</log>
</then>
<else>
<log level="custom">
<property name="ADT" value="Non"/>
</log>
</else>
</filter>xpath表达式在像https://www.freeformatter.com/xpath-tester.html这样的在线测试器中工作,有什么问题吗?
发布于 2019-10-28 21:11:35
请在您的使用案例中使用以下代理。
<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
name="filter-hl7"
startOnLoad="true"
statistics="disable"
trace="disable"
transports="http,https">
<target>
<inSequence>
<log level="custom">
<property name="log1" value="API invoked"/>
</log>
<filter xmlns:hl7="http://wso2.org/hl7"
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xpath="contains(name(//soapenv:Envelope/soapenv:Body/hl7:message/*),'ADT')">
<then>
<log level="full">
<property name="log2" value="######### Xpath matched!"/>
</log>
</then>
<else>
<log level="full">
<property name="log3" value="########## Xpath did not match!"/>
</log>
</else>
</filter>
<respond/>
</inSequence>
<outSequence/>
<faultSequence/>
</target>
<description/>
</proxy>此Xpath在代理中工作。
contains(name(//soapenv:Envelope/soapenv:Body/hl7:message/*),'ADT')https://stackoverflow.com/questions/58589760
复制相似问题