【问题标题】:How to retrive the value in Wso2esb using Xpath如何使用 Xpath 检索 Wso2esb 中的值
【发布时间】:2013-11-08 07:53:41
【问题描述】:

我正在使用 wso2esb4.7.0 我已经编写了 jms 代理所以我希望将我的数据发送到端点但我无法处理这个 我的代理是

<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
       name="MediaMoveQueue"
       transports="jms"
       startOnLoad="true"
       trace="disable">
   <description/>
   <target>
      <inSequence>
         <property name="readingspayload" expression="$body"/>
         <payloadFactory media-type="xml">
            <format>
               <p:hello xmlns:p="http://jaxws.youtility.in/">
                   <arg0 xmlns="">$1</arg0>
               </p:hello>
            </format>
            <args>
               <arg evaluator="xml" expression="get-property('readingspayload')"/>
            </args>
         </payloadFactory>
         <!--header name="Action" value="hello"/-->
         <log level="full"/>
         <send>
            <endpoint>
               <address uri="http://192.168.1.2:8282/services/media_move_service_i_f"
                        format="soap11"/>
            </endpoint>
         </send>
      </inSequence>
      <outSequence>
         <log level="full"/>
         <send/>
      </outSequence>
   </target>
</proxy>

在这个代理中,如果我记录这个 esb,我会得到这样的数据 我的日志是这样的


{"timestamp":1383715637698,"tmpfilename":"313d79a7-c29b-4e1a-9609-818610a6a66b.pdf","objecttype":"Punch","filename":"enterprisedb_order.pdf","totalfilesize":994086," uuid":"313d79a7-c29b-4e1a-9609-818610a6a66b","objectid":"313d79a7-c29b-4e1a-9609-818610a6a66b","fullpath":"/tmp/tmpmedia//313d79a7-c29b-4e1a-9609- 818610a6a66b.pdf","deviceId":"911202500210109","filemimetype":"PNG"}

但我只需要将该 json 格式的数据发送到我的端点,因为我已经尝试过这个 xpath,但它显示名称空间错误我将如何得到这个

$axis2ns58:text

但它的抛出错误我希望将该数据发送到我的端点 我已经尝试过了,但我只需要上述格式的数据

//soapenv:Body

这样的结果

   <soapenv:Body xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> 
      <axis2ns58:text xmlns:axis2ns58="http://ws.apache.org/commons/ns/payload">{"timestamp":1383715637698,"tmpfilename":"313d79a7-c29b-4e1a-9609-818610a6a66b.pdf","objecttype":"Punch","filename":"enterprisedb_order.pdf","totalfilesize":994086,"uuid":"313d79a7-c29b-4e1a-9609-818610a6a66b","objectid":"313d79a7-c29b-4e1a-9609-818610a6a66b","fullpath":"/tmp/tmpmedia//313d79a7-c29b-4e1a-9609-818610a6a66b.pdf","deviceId":"911202500210109","filemimetype":"PNG"}</axis2ns58:text> 
</soapenv:Body>

但我希望将以下数据发送到我的端点,即使有效负载也不支持此

{"timestamp":1383715637698,"tmpfilename":"313d79a7-c29b-4e1a-9609-818610a6a66b.pdf","objecttype":"Punch","filename":"enterprisedb_order.pdf","totalfilesize":994086,"uuid":"313d79a7-c29b-4e1a-9609-818610a6a66b","objectid":"313d79a7-c29b-4e1a-9609-818610a6a66b","fullpath":"/tmp/tmpmedia//313d79a7-c29b-4e1a-9609-818610a6a66b.pdf","deviceId":"911202500210109","filemimetype":"PNG"}

【问题讨论】:

    标签: xpath wso2 wso2esb wso2carbon xpath-2.0


    【解决方案1】:

    你可以试试

    //soapenv:Body/ns:text
    

    并设置命名空间

    ns="http://ws.apache.org/commons/ns/payload"
    

    【讨论】:

    • BUt 它为每个请求定义了一些其他方式 ws.apache.org/commons/ns/payload"> 正在改变它添加
    • 命名空间的名称(例如axis2ns58)无关紧要。将其视为映射到命名空间 URL 的变量。你可以随心所欲地调用它,你不需要使用axis2nsxx(我建议你不要)。数量在增加,但名称空间 URL 保持不变。您可以使用 //soapenv:Body/abcdef:text,如果 abcdef 等于相同的命名空间 URL,它们将是相等的。
    • 感谢您的明确解释..我会尽快回复您
    【解决方案2】:

    试试这个: 修改您的代理服务如下:

    而不是<property name="readingspayload" expression="$body"/> , modify it to below, <property xmlns:ns="http://ws.apache.org/commons/ns/payload" name="readingspayload" expression="$body/ns:text/text()"/>

     ****
    

    希望这应该工作!!!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      • 2020-04-26
      • 1970-01-01
      相关资源
      最近更新 更多