2013-03-15 86 views
0

如何获得关键的价值,我需要写一个XPath表达式来评估是否关键“错误代码”的值= -3025在XML:我使用XPath表达式

<?xml version="1.0" encoding="UTF-8"?> 
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> 
    <esb:esb-header xmlns:esb="http://schemas.company.com/soa/esb"> 
    <esb:params> 
     <esb:param> 
     <esb:param-name>ErrorCode</esb:param-name> 
     <esb:param-value>-3025</esb:param-value> 
     </esb:param> 
    </esb:params> 
    </esb:esb-header> 
</soapenv:Envelope> 

而且,对于有前缀。

回答

0

的XPath 2.0:

/*:Envelope/*:esb-header/*:params/*:param[*:param-name='ErrorCode' and *:param-value='-3025'] 

对于XPath 1.0中,你可以使用local-name()代替(呸):

/*[local-name()='Envelope']/*[local-name()='esb-header']/*[local-name()='params']/*[local-name()='param'][*[local-name()='param-name']='ErrorCode' and *[local-name()='param-value']='-3025'] 

如果你有一个方法来声明这些命名空间中,这将是更容易1.0使用前缀而不是local-name()

另外,还可以包住整个路径中boolean()(的XPath 1.0/2.0)或exists()(XPath 2.0中)返回任一truefalse