如何使用属性<dto:telefono>的命名空间为下面的xml找到Xpath

时间:2017-01-13 06:40:07

标签: xml xpath

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"     xmlns:ser="http://service.web.com" xmlns:dto="http://dto.service.web.com">
   <soapenv:Header/>
   <soapenv:Body>
      <ser:service>
         <ser:request>
            <dto:telefono>29932425</dto:telefono>
         </ser:request>
      </ser:service>
   </soapenv:Body>
</soapenv:Envelope>

需要找到属性名称telefono的xpath, 尝试了所有这些

//*/*[local-name()='dto:telefono']
//*/*/*[local-name()='telefono']
//*/*/*[local-name()='dto:telefono']
//*/*[local-name()='telefono']
//*[local-name()='dto:telefono']
//*[local-name()='telefono']

1 个答案:

答案 0 :(得分:0)

使用*[local-name()='telefono']的所有尝试过的XPath都应该有效:

//*[local-name()='telefono']

<强> demo 1

至于dto:telefono,XPath应该使用name()而不是local-name()

//*[name()='telefono']

<强> demo 2

顺便说一下,dto:telefono是一个元素名称而非属性名称。