我正在尝试在以下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>
我尝试了以下说明,但日志始终显示对XPath表达式的求值导致错误
但是没有一个起作用,我该如何解决这个问题?
非常感谢。
您可以在迭代中介器上方添加一个<log level="full"/>
中介器,以便它将在此时打印消息上下文的内容。请检查wso2carbon.log以验证消息上下文中是否存在您尝试通过XPath表达式获取的内容。