2016-03-01 35 views
0

我想知道你是否可以幫助我。我正在嘗試使用TFHpple來解析使用Swift 1.2的HTML數據,但我在處理XPath表達式時遇到問題。我收到以下錯誤:XPath表達式不起作用/不正確TFHpple SWIFT 1.2

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" 

我想獲得的信息是make和進入汽車的model

<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> 

斯威夫特代碼:

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) 
      } 
     } 
+0

也許這是因爲你正在使用的是字符不會被解釋爲引號,而不是''',或者因爲XPath引擎不支持謂詞(在'['和']'之間)。 –

+1

除了捲曲引號外,你的XPath也是不正確的,試試:'var XPathString =「// td [@ class ='CarMiniProfile-TableHeader']」' –

+0

我現在試試看,謝謝指出錯誤的引號。運輸署最終不需要?並且這會返回make或者fiat這個字, – Bobby

回答

0

第一:你的樣品中你有:

<td class="CarMiniProfile-tableHeader"> 

但你查詢

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

(注意資金「T '在TableHeader中)。 xpath是區分大小寫的。

第二:通過查詢// TD [@類=「CarMiniProfile-的tableHeader」]/TD你意味着你有一個 'TD' 元素內部外TD,而它們是兄弟姐妹。

有許多的方式來獲得品牌和型號在這裏一對夫婦

  • 選項1:去一個級別,並從TR // TR/TD [2]將返回一個列表中選擇使用同級軸:節點(TR的每第二個TD-子)
  • 選項2 // TD /以下同胞:: TD [1]
+0

謝謝解釋很多:) – Bobby