用ESQL丰富soap消息

用ESQL丰富soap消息,soap,ibm-integration-bus,extended-sql,Soap,Ibm Integration Bus,Extended Sql,我正在创建一个通过SOAP接收消息的简单流,在IIB中,我使用ESQL处理消息 这是我的SOAP消息: <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:com="http://ComponentesTI"> <soapenv:Header/> <soapenv:Body> <com:PushMessageRequest>

我正在创建一个通过SOAP接收消息的简单流,在IIB中,我使用ESQL处理消息

这是我的SOAP消息:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:com="http://ComponentesTI">
 <soapenv:Header/>
 <soapenv:Body>
  <com:PushMessageRequest>
     <Message>
      <SerializedContent>?</SerializedContent>
        <HTTPAddress>?</HTTPAddress>
     </Message>
     <Identification>?</Identification>
  </com:PushMessageRequest>
 </soapenv:Body>
</soapenv:Envelope>

您忘记在ESQL语法中使用XML名称空间

CREATE LASTCHILD OF OutputRoot DOMAIN 'XMLNSC';
DECLARE statement REFERENCE TO OutputRoot.XMLNSC;
DECLARE statement2 REFERENCE TO InputRoot.XMLNSC;
SET statement = statement2;

DECLARE com NAMESPACE 'http://ComponentesTI';
SET statement.com:PushMessageRequest.Identification = UUIDASCHAR;

下面的代码片段考虑了SOAP信封

复制所有内容,包括属性文件夹和任何其他标题文件夹,然后更改标识字段

SET OutputRoot = InputRoot;
SET OutputRoot.XMLNSC.*:Envelope.*:Body.*:PushMessageRequest.Message.Identification = UUIDASCHAR;
创建一个新的XMLNSC聚合,其他代码根据需要处理Properties文件夹和其他头

CREATE LASTCHILD OF OutputRoot DOMAIN 'XMLNSC';
SET OutputRoot.XMLNSC.*:Envelope.*:Body.*:PushMessageRequest.Message.Identification = UUIDASCHAR;
根据您使用的是HTTPInput还是SOAPInput节点,顶级聚合可能是SOAP而不是XMLNSC


最后,由于我们没有更改任何名称空间,并且正在覆盖标识中的值,因此我使用了语法*:对于名称空间,因此我不必为soapenvcom

Obrigado amigo,funcionou声明名称空间变量。
CREATE LASTCHILD OF OutputRoot DOMAIN 'XMLNSC';
SET OutputRoot.XMLNSC.*:Envelope.*:Body.*:PushMessageRequest.Message.Identification = UUIDASCHAR;