使用Xpath1.0提取操作名称
Extracting operation name using Xpath1.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-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']/*
获取输出:<ser:ReportRequest xmlns:ser="http://visa.com/sd/pc/service" FromDate="2017-11-01" Timezone="GMT" ToDate="2017-11-30" TransactionType="All"/>
预期输出:ReportRequest
有什么建议吗?
要检索预期的输出 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
元素的所有子元素的所有名称。
我正在尝试从传入请求中提取操作名称。
要求:
<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']/*
获取输出:<ser:ReportRequest xmlns:ser="http://visa.com/sd/pc/service" FromDate="2017-11-01" Timezone="GMT" ToDate="2017-11-30" TransactionType="All"/>
预期输出:ReportRequest
有什么建议吗?
要检索预期的输出 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
元素的所有子元素的所有名称。