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"
我想获取的信息是进入的车的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>
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]
我想知道你是否可以帮助我。我正在尝试使用 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’]/tdXPath 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>
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]