Xpath WSO2 ESB聚合中介程序工作不正常
我使用的是wso2ESB 4.8.0,我在这个url上遵循了示例: 编写此代理服务: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
<?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