OSB替换节点

时间:2015-03-20 19:44:19

标签: xml oracle proxy xquery osb

我一直在尝试用“替换”操作替换节点,但我不明白,希望有人帮助我。

我在舞台内部有一个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没有到达端点并希望替换我所说的内容时,我得到了回音。

非常感谢提前。

2 个答案:

答案 0 :(得分:0)

作为理解的一部分,您的问题中有两部分:

  1. 您想要替换节点内容
  2. 你正在回声
  3. 第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。