Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xpath WSO2 ESB聚合中介程序工作不正常_Xpath_Wso2_Aggregate_Wso2esb - Fatal编程技术网

Xpath WSO2 ESB聚合中介程序工作不正常

Xpath WSO2 ESB聚合中介程序工作不正常,xpath,wso2,aggregate,wso2esb,Xpath,Wso2,Aggregate,Wso2esb,我使用的是wso2ESB 4.8.0,我在这个url上遵循了示例: 编写此代理服务: <?xml version="1.0" encoding="UTF-8"?> <proxy xmlns="http://ws.apache.org/ns/synapse" name="adminBroadcastEndpoint" transports="https,http" statistics="disable" trace="d

我使用的是wso2ESB 4.8.0,我在这个url上遵循了示例:

编写此代理服务:

<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
       name="adminBroadcastEndpoint"
       transports="https,http"
       statistics="disable"
       trace="disable"
       startOnLoad="true">
   <target>
      <inSequence>
         <send>
            <endpoint>
               <recipientlist>
                  <endpoint>
                     <address uri="http://127.0.0.1:8080/RestService/rest/servizio/"/>
                  </endpoint>
                  <endpoint>
                     <address uri="http://127.0.0.1:8081/RestService/rest/servizio/"/>
                  </endpoint>
           </recipientlist>
        </endpoint>
         </send>
         <drop/>
      </inSequence>
      <outSequence>

         <payloadFactory media-type="xml">
            <format>
                <broadcast>
                $1
               </broadcast>
            </format>
            <args>
               <arg evaluator="xml" expression="$body/root"/>
            </args>
        </payloadFactory>

        <aggregate>
           <completeCondition>
               <messageCount/>
            </completeCondition>
           <onComplete xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" expression="/">
               <send/>
         </onComplete>
       </aggregate>

      </outSequence>
   </target>
   <description/>
</proxy>
我意识到,如果我在payloadfactory中定义一个名称空间和一个要附加的prfix,如:

<payloadFactory xmlns:m0="my.namespace" media-type="xml">
            <m0:format>
                <m0:broadcast>
                $1
               </m0:broadcast>
            </m0:format>
            <args>
               <arg evaluator="xml" expression="$body/root"/>
            </args>
 </payloadFactory>

$1
表达式:$body/m0:广播工作正常。。。那么名称空间定义是强制性的吗


我有什么遗漏吗?谢谢

如果XML元素在名称空间中,那么XPath必须定义和使用名称空间前缀,或者在路径步骤中指定任何名称空间,如下所示:

$body/*:broadcast
我在这里找到了答案:


我解决了使用丰富的调解人。但我认为总调解人并没有真正正确的行为。。。也许应该检查。

我认为WSO不支持XPath 2.0,所以如果你想使用通配符名称空间,你必须选择
$body/*[local name(.)='broadcast']
。谢谢,我在我的第一篇文章中添加了一个答案,因为我需要用一些代码来丰富它。我在代理响应中仍然有问题
2014-03-02 17:37:32,021] ERROR - AggregateMediator Error evaluating expression:  $body/broadcast//result
org.apache.synapse.SynapseException: Could not find matching elements to aggregate.
<payloadFactory xmlns:m0="my.namespace" media-type="xml">
            <m0:format>
                <m0:broadcast>
                $1
               </m0:broadcast>
            </m0:format>
            <args>
               <arg evaluator="xml" expression="$body/root"/>
            </args>
 </payloadFactory>
$body/*:broadcast