2017-09-12 35 views
0

这是我的传入负载。mule中的xpath3问题

<?xml version="1.0" encoding="UTF-8"?> 
    <detail><ns1:SiperianRequestFault xmlns:ns1="urn:siperian.api"> 
    <ns1:requestName>SearchQuery</ns1:requestName> 
    <ns1:errorCode>SIP-18018</ns1:errorCode> 
    <ns1:errorMessage>SIP-18018: Request not recognized by the user profile providers. 
Review the server log for more details.</ns1:errorMessage> 
</ns1:SiperianRequestFault></detail> 

当我查询

xpath3('//detail')

这里是输出

SearchQuerySIP-18018SIP-18018: Request not recognized by the user profile providers.Review the server log for more details. 

但我要的是提取errorCode, errorMessage

回答

1

请使用#[xpath3('/detail/*:SiperianRequestFault/*:errorCode')]来得到errorCode。我已经使用*:来定义名称空间通配符。如果你想使用命名空间,你可以将它定义为

<mulexml:namespace-manager includeConfigNamespaces="true"> 
    <mulexml:namespace prefix="ns1" uri="urn:siperian.api" /> 
</mulexml:namespace-manager> 

则表达式会像#[xpath3('/detail/ns1:SiperianRequestFault/ns1:errorCode')]

希望这有助于。

+0

非常感谢兄弟! – Dhanjeet