使用Xpath1.0提取操作名

使用Xpath1.0提取操作名,xpath,xpath-1.0,Xpath,Xpath 1.0,我正在尝试从传入请求中提取操作名称 请求: <soapenv:Envelope xmlns:ser="http://visa.com/sd/pc/service" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Header> </soapenv:Header> <soapenv:Body wsu:Id="id-058C2E38D966BC3F2E1

我正在尝试从传入请求中提取操作名称

请求:

<soapenv:Envelope xmlns:ser="http://visa.com/sd/pc/service" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
   <soapenv:Header>
   </soapenv:Header>
   <soapenv:Body wsu:Id="id-058C2E38D966BC3F2E15372874505064" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
      <ser:ReportRequest FromDate="2017-11-01"  Timezone="GMT" ToDate="2017-11-30" TransactionType="All"/>
   </soapenv:Body>
</soapenv:Envelope>

使用的Xpath
/*[local-name()='Envelope']/*[local-name()='Body']/*

获取输出

预期输出
报告请求


有什么建议吗?

要检索预期的输出
ReportRequest
,必须将XPath表达式修改为

local-name(/*[local-name()='Envelope']/*[local-name()='Body']/*)
这将获取XPath-1.0中第一个子级的本地名称。
如果要获取所有子项的名称,必须迭代核心路径表达式,并分别获取每个项的
local-name()


如果有可用的XPath-2.0,可以简化它并使用以下表达式

/*[local-name()='Envelope']/*[local-name()='Body']/*/local-name()
获取
soapenv:Body
元素的所有子元素的所有名称