XPath 表达式不是 working/incorrect TFHpple SWIFT 1.2

XPath Expression not working/incorrect TFHpple SWIFT 1.2

我想知道你是否可以帮助我。我正在尝试使用 TFHpple 来使用 Swift 1.2 解析 HTML 数据,但我在计算 XPath 表达式时遇到问题。我收到以下错误:

Optional(https://www.rac.co.uk/buying-a-car/car-passport/report/buyer/purchase/?BuyerVrm=yg06dxt)

XPath error : Invalid expression
//td[@class=‘CarMiniProfile-TableHeader’]/td

XPath error : Invalid expression //td[@class=‘CarMiniProfile-TableHeader’]/td

2016-03-01 16:26:23.645 CarCamera[1974:63769] Unable to evaluate XPath. empty nodes!!

我尝试使用的 XPath 代码是

var XPathString = "//td[@class=‘CarMiniProfile-TableHeader’]/td"

我想获取的信息是进入的车的makemodel

<div>
  <table class="CarMiniProfile-table">
    <tbody>
      <tr class="CarMiniProfile-tableFirstRow">
        <td class="CarMiniProfile-tableHeader">
          Make
        </td>
        <td>
          FIAT
        </td>
      </tr>
      <tr>
        <td class="CarMiniProfile-tableHeader">
          Model
        </td>
        <td>
          PUNTO SPORTING M-JET
        </td>
      </tr>
      <tr>
        <td class="CarMiniProfile-tableHeader">
          Colour
        </td>
        <td>
           BLUE
        </td>
      </tr>
      <tr>
        <td class="CarMiniProfile-tableHeader">
          Year
        </td>
        <td>
          2006
        </td>
      </tr>
      <tr>
        <td class="CarMiniProfile-tableHeader">
          Engine Size
        </td>
        <td>
          1910 cc
        </td>
      </tr>
    </tbody>
  </table>
</div>

Swift代码:

var newURL = NSURL(string: "https://www.rac.co.uk/buying-a-car/car-passport/report/buyer/purchase/?BuyerVrm=\(numberplate)")
var htmlData: NSData = NSData(contentsOfURL: newURL!)!
var Parser = TFHpple(HTMLData: htmlData)
var XPathString = "//td[@class=‘CarMiniProfile-TableHeader’]/td"
var nodes = Parser.searchWithXPathQuery(XPathString) as NSArray

        if(nodes.count == 0 ){
            println("empty nodes!!")
        }else{
            for element in nodes
            {
                println(element.content)
            }
        }

首先:在你的样本中你有:

 <td class="CarMiniProfile-tableHeader">

但您查询的是

 //td[@class=‘CarMiniProfile-TableHeader’] 

(注意 TableHeader 中的大写 'T')。 xpath 区分大小写。

其次:通过查询 //td[@class='CarMiniProfile-TableHeader']/td 你暗示你有一个 'td' 元素 inside 外面的 td,而他们是兄弟姐妹。

这里有很多方法可以获得品牌和型号

  • 选项 1:向上一级,select 来自 TR //tr/td[2] 将为您 return 节点列表(tr 的第二个 td-child)
  • 选项 2:使用兄弟轴://td/following-sibling::td[1]