Swift xpath搜索返回字符串

时间:2015-10-26 19:17:30

标签: ios swift xpath

例如,在此页面:

http://www.homedepot.com/p/Arnold-Universal-Snow-Thrower-Key-Set-4-Piece-490-241-0008/202251530?keyword=4902410008

我们使用这个xpath:

concat(//*[@id='ajaxPrice']/text(), //*[@id='ciItemPrice']/text())

我已经尝试过使用xpath的所有libs:

https://github.com/tid-kijyun/Kanna

https://github.com/topfunky/hpple

https://github.com/honghaoz/Ji

始终获得空结果。如果我将作为xpath查询的结果返回字符串,它们都无法正常工作。我有什么想法可以返回字符串而不是XMLElement

2 个答案:

答案 0 :(得分:2)

我已经在名为Fuzihttps://github.com/cezheng/Fuzi)的Swift库上尝试了您的XPath查询,它返回了$ 7.98'。 (空格不被修剪,因此您可能需要自己添加)

与您列出的3个库类似,Fuzi也是libxml2的包装。

这是我的代码

import Fuzi
let document = try? HTMLDocument(string: htmlString)
if let result = document?.eval(xpath: "concat(//*[@id='ajaxPrice']/text(), //*[@id='ciItemPrice']/text())") {
    print(result.stringValue)
}

答案 1 :(得分:0)

在XPath 2中,我认为最好使用string-join,如下例所示:

string-join(//*[@id='ajaxPrice']/text(), //*[@id='ciItemPrice']/text())

我希望这对你有所帮助。