Оценка XPath привела к ошибке - PullRequest
0 голосов
/ 29 октября 2019

Я пытаюсь получить тег MedicalResults в следующем xml:

<?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

Но ничего из этого не помогло, как я могу решить проблему?

Большое спасибо заранее.

1 Ответ

0 голосов
/ 05 ноября 2019

Вы можете добавить посредник <log level="full"/> над посредником итерации, чтобы он печатал содержимое контекста сообщения в этой точке. Пожалуйста, проверьте wso2carbon.log, чтобы проверить, присутствует ли контент, который вы пытаетесь получить с помощью выражения XPath, в контексте сообщения.

...