我一直在尝试用“替换”操作替换节点,但我不明白,希望有人帮助我。
我在舞台内部有一个ErrorHandler;分配>替换>回复。
In Assign;
Expression: $body
Variable: faultString
In Replace;
Xpath: .
In Variable: faultString
Expression: $body
Replace node contents
In Reply;
With failure
所以这是我得到回音,这个;
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:cli="http://www.xxxx.com.mx/xxxx/xxxxxxx">
<soapenv:Header xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"></soapenv:Header>
<soapenv:Body>
<cli:getXXXXXXXXXXXXXXX>
<Json>{"principal":"principal","secundario":"secundario"}</Json>
</cli:getXXXXXXXXXXXXXXX>
</soapenv:Body>
</soapenv:Envelope>
我想替换节点
<Json>{"principal":"principal","secundario":"secundario"}</Json>
用;
<Json>{"otracosa":"otro","final":"final"}</Json>
顺便说一句,当OSB没有到达端点并希望替换我所说的内容时,我得到了回音。
非常感谢提前。
答案 0 :(得分:0)
作为理解的一部分,您的问题中有两部分:
第1点的解决方案:您想要替换节点内容:
如果要替换标签内的数据,请使用替换为&#34;替换节点内容&#34; 并提供以下详细信息: XPath:./ :getXXXXXXXXXXXXXXX / :Json 在变量:正文 表达:{&#34; otracosa&#34;:&#34; otro&#34;,&#34; final&#34;:&#34; final&#34;}
第2点的解决方案:你得到了回音:
这是OSB的行为,如果没有调用端点,它将给出回声。这将提供没有调用任何服务的信息。为了避免回声,请确保您的条件对执行标注配置有效。
如果您需要进一步澄清,可以在这里询问。
此致
Asutosh
答案 1 :(得分:0)
要替换您想要的内容,请使用此配置:
XPath: ./*:getXXXXXXXXXXXXXXX/Json
In Variable: $body
Expression: <Json>{"otracosa":"otro","final":"final"}</Json>
Replace entire node
另一种选择:
XPath: ./*:getXXXXXXXXXXXXXXX/Json
In Variable: $body
Expression: xs:string('{"otracosa":"otro","final":"final"}')
Replace node contents
一些解释:(用我的话)
变量:您要替换的有效负载在哪里。根变量。
XPath:XPath,用于获取要在变量中替换的节点。在 这个例子 ”。”根是可以保留的,“”可以是任何命名空间。 (您 如果在IDE中定义名称空间,也可以使用“cli”代替“”
表达:您想要放置的数据。
替换整个节点/替换节点内容:如果要替换所有节点 内容包括您使用XPath获得的标记或仅包含内容 在标签内。我给你举了两个例子来做同样的事。
关于Echo,也许你没有路由节点,或者你没有到达端点。响应管道在单独的线程中运行,如果没有路由节点,则会为响应管道创建一个echo。