我正在创建一个通过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(使用GUID)更改标识字段来复制此消息
类似的东西:
CREATE LASTCHILD OF OutputRoot DOMAIN 'XMLNSC';
DECLARE statement REFERENCE TO OutputRoot.XMLNSC;
DECLARE statement2 REFERENCE TO InputRoot.XMLNSC;
SET statement = statement2;
SET statement.PushMessageRequest.Identification = UUIDASCHAR;
答案 0 :(得分:1)
您忘记在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;
答案 1 :(得分:0)
下面的代码片段考虑了SOAP Envelope。
复制包括“属性”文件夹和任何其他“标题”文件夹在内的所有内容,然后更改“标识”字段。
SET OutputRoot = InputRoot;
SET OutputRoot.XMLNSC.*:Envelope.*:Body.*:PushMessageRequest.Message.Identification = UUIDASCHAR;
使用处理Properties文件夹和其他标头的其他代码创建新的XMLNSC聚合。
CREATE LASTCHILD OF OutputRoot DOMAIN 'XMLNSC';
SET OutputRoot.XMLNSC.*:Envelope.*:Body.*:PushMessageRequest.Message.Identification = UUIDASCHAR;
此外,根据您使用的是HTTPInput还是SOAPInput节点,顶级聚合可能是SOAP而不是XMLNSC。
最后,因为我们没有更改任何名称空间并且正在覆盖标识中的值,所以我使用语法 * :作为名称空间,所以我没有必要声明 soapenv 和 com
的命名空间变量