XPath的评估导致错误

问题描述 投票:0回答:1

我正在尝试在以下xml中获取MedicalResults标记:

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
   <soapenv:Body>
      <jsonObject>
         <atenciones>
            <center>
               <n1>13601</n1>
               <extra>
                  <type_id>NI</type_id>
               </extra>
            </center>
            <Remission>
               <type>2</type>
               <Diagnose>
                  <illness>xxx</illness>
               </Diagnose>
               <MedicalResults>
                  <id_auth>123</id_auth>
                  <AdditionalData>
                     <quantity>20</quantity>
                  </AdditionalData>
               </MedicalResults>
            </Remission>
         </atenciones>
      </jsonObject>
   </soapenv:Body>
</soapenv:Envelope>

我在一个序列中包含一个带有以下代码的迭代器(WSO2EI v6.4.0):

 <?xml version="1.0" encoding="UTF-8"?>
    <sequence xmlns="http://ws.apache.org/ns/synapse" name="AtencionTransformacionInSequence">
       <log>
          <property name="Sequence" value="Starting sequence" />
       </log>
       <payloadFactory media-type="json">
          <format>{"atenciones":$1}</format>
          <args>
             <arg xmlns:ns="http://org.apache.synapse/xsd" evaluator="xml" expression="get-property('jsonAtenciones')" literal="false" />
          </args>
       </payloadFactory>
       <!-- issue starts here -->
<iterate xmlns:ns="http://org.apache.synapse/xsd" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" continueParent="true" expression="/soapenv:Envelope/soapenv:Body/jsonObject/atenciones/Remission/MedicalResults" sequential="true">
<!-- issue ends -->
          <target>
             <sequence>
                <payloadFactory media-type="json">
                   <format>{"Remission": $1}</format>
                   <args>
                      <arg evaluator="xml" expression="$body/atenciones" literal="false" />
                   </args>
                </payloadFactory>
                <log>
                   <property name="Saving data" value="OK" />
                </log>
                <send receive="AtencionTransformacionOutSequence" />
             </sequence>
          </target>
       </iterate>
       <sequence key="ProgressionInSequence" />
       <respond />
    </sequence>

Screen capture from WSO2EI我尝试了以下说明,但日志始终显示对XPath表达式的求值导致错误

  • $ body / jsonObject / atenciones / Remission / MedicalResults
  • json-eval($。jsonObject.atenciones.Remission / MedicalResults)
  • // ns:jsonObject / ns:atenciones / ns:Remission / ns:MedicalResults

但是没有一个起作用,我该如何解决这个问题?

非常感谢。

wso2ei
1个回答
0
投票

您可以在迭代中介器上方添加一个<log level="full"/>中介器,以便它将在此时打印消息上下文的内容。请检查wso2carbon.log以验证消息上下文中是否存在您尝试通过XPath表达式获取的内容。

© www.soinside.com 2019 - 2024. All rights reserved.