代码之家  ›  专栏  ›  技术社区  ›  Martin

这个xml的xpath是什么

  •  0
  • Martin  · 技术社区  · 14 年前

    /discovery/contractRef[@xmlns='http://schemas.xmlsoap.org/disco/scl/']/@ref
    

    它什么也不返回。我怎样才能得到这个变量,我遗漏了什么?谢谢

    <?xml version="1.0" encoding="utf-8"?>
    <discovery xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/disco/">
      <contractRef ref="http://127.0.0.1/Services/Core/Calendar/LBCalendar.svc?wsdl" docRef="http://127.0.0.1/Services/Core/Calendar/LBCalendar.svc" xmlns="http://schemas.xmlsoap.org/disco/scl/" />
    </discovery>
    
    2 回复  |  直到 14 年前
        1
  •  3
  •   jasso    14 年前

    这是一个常见问题。元素 <discovery> 在命名空间中 http://schemas.xmlsoap.org/disco/ 以及子元素 <contractRef> 在命名空间中 http://schemas.xmlsoap.org/disco/scl/ xmlns:scl="http://schemas.xmlsoap.org/disco/scl/"

    我们假设 http://schemas.xmlsoap.org/disco/ 已注册到前缀 d http://schemas.xmlsoap.org/disc/scl/ 已注册到前缀 scl 那么正确的XPath表达式应该是

    /d:discovery/scl:contractRef/@ref
    

    local-name() 功能

    /*[local-name() = 'discovery*]/*[local-name() = 'contractRef']/@ref
    

    注意,属性名不需要名称空间前缀,因为它不属于任何名称空间。

        2
  •  0
  •   Mike Cheel    14 年前