XPath表达式无效/错误TFHpple SWIFT 1.2

时间:2016-03-01 16:33:39

标签: xml xcode swift xpath tfhpple

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

  

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

     

XPath错误:表达式无效
  // td [@ class ='CarMiniProfile-TableHeader'] / td

     

XPath错误:表达式无效   // TD [@类=“CarMiniProfile-的tableHeader”] / TD

     

2016-03-01 16:26:23.645 CarCamera [1974:63769]无法评估XPath。   空节点!!

我尝试使用的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)
            }
        }

1 个答案:

答案 0 :(得分:0)

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

 <td class="CarMiniProfile-tableHeader">

但你正在查询

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

(请注意TableHeader中的大写&#39; T&#39;)。 xpath区分大小写。

第二:通过查询// td [@ class ='CarMiniProfile-TableHeader'] / td,你暗示你有一个&#39; td&#39;元素里面外部的td,而他们是兄弟姐妹。

有很多方法可以在这里获得制作和模型

  • 选项1:向上一级并从TR // tr / td [2]中选择将返回一个节点列表(tr的每秒td-child)
  • 选项2:使用兄弟轴:// td / following-sibling :: td [1]