Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Anypoint Mule上的Xpath3在CDATA中获取标签?_Xpath_Mule_Cdata_Anypoint Studio - Fatal编程技术网

如何使用Anypoint Mule上的Xpath3在CDATA中获取标签?

如何使用Anypoint Mule上的Xpath3在CDATA中获取标签?,xpath,mule,cdata,anypoint-studio,Xpath,Mule,Cdata,Anypoint Studio,我试图在Anypoint mule上使用Xpath3在PDP响应中获取标记决策 这是PDP的响应: <ns:getDecisionResponse xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://org.apache.axis2/xsd"> <ns:return><![CDATA[<Response xmlns="urn:oasis:names:tc:x

我试图在Anypoint mule上使用Xpath3在PDP响应中获取标记
决策

这是PDP的响应:

<ns:getDecisionResponse xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://org.apache.axis2/xsd">
   <ns:return><![CDATA[<Response xmlns="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17"><Result><Decision>Indeterminate</Decision><Status><StatusCode Value="urn:oasis:names:tc:xacml:1.0:status:syntax-error"/><StatusMessage>Invalid request  : DOM of request element can not be created from String</StatusMessage></Status></Result></Response>]]></ns:return>
</ns:getDecisionResponse>
提前谢谢


Juan Andrés

您可以使用正则表达式从XPATH3中删除CDATA,如下所示:-

 <logger message="#[xpath3('/*:getDecisionResponse/*:return',payload, 'STRING').replaceAll(&quot;[^\\u0009\\u000A\\u000D\\u0020-\\uD7FF\\uE000-\\uFFFD\\x{10000}-\\x{10FFFF}]&quot;, &quot;&quot;)]" level="INFO" doc:name="Logger"/>  

参考资料:-

现在,一旦您从CDATA中获取xml,您需要执行另一次XPATH3提取,以从xml中获取所需的值,CDATA中没有标记。这就是CDATA的意思:“这里的东西可能看起来像标签,但它们不是:它们将被视为字符数据”。如果CDATA被错误地使用,如这里所示,那么您必须将CDATA的内容提取为文本,并将其提交给XML解析器。
 <logger message="#[xpath3('/*:getDecisionResponse/*:return',payload, 'STRING').replaceAll(&quot;[^\\u0009\\u000A\\u000D\\u0020-\\uD7FF\\uE000-\\uFFFD\\x{10000}-\\x{10FFFF}]&quot;, &quot;&quot;)]" level="INFO" doc:name="Logger"/>