【发布时间】:2019-05-15 02:33:23
【问题描述】:
我是 Apache Synapse 的新手。我需要对 SOAP 服务进行基于内容的路由和代理。但是,实际请求是 SOAP 请求正文中 CDATA 标记内的 XML 文档。在基于此文档的内容进行路由之后,我需要使用 XQuery 中介器来转换文档并调用代理服务。我无法更改此请求的 WSDL。是否可以对 CDATA 标签内的文档进行路由和转换?当我从 Synapse 中记录请求时,我看到 CDATA 中的 XML 已被转义。我看过一些描述保留 CDATA 的帖子,但我不确定在这两种情况下我能用它做什么。
请求如下所示。我需要根据TypeOfRequest 属性来路由消息:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:svc="http://integration.myservice.com">
<soapenv:Header/>
<soapenv:Body>
<svc:Execute>
<svc:myservice>
<![CDATA[
<?xml version="1.0" encoding="UTF-8"?>
<myservice xmlns="http://integration.myservice.com">
<Request TypeOfRequest="type1" RequestID="1" Echo="false">
<Message>
<Tag1510>
<TypeCode>10</TypeCode>
<SubTypeCode>00</SubTypeCode>
</Tag1510>
<Tag2000>
<Amount>
<Amount>1.00</Amount>
</Amount>
</Tag2000>
</Message>
</Request>
</myservice>
]]>
</svc:myservice>
</svc:Execute>
</soapenv:Body>
</soapenv:Envelope>
【问题讨论】: