xpath的多个string()结果?

时间:2011-09-26 04:27:45

标签: xpath

string()

在我尝试从中提取文字的某个网页上效果很好。

http://www.bing.com/search?q=lemons&first=111&FORM=PERE

具有类似的结构。对于bing,我尝试的xpath是

string(//h3/a)

非常适合获取搜索结果,即使使用强标记等,但只返回第一个结果。有没有像strings()这样的东西,所以我可以得到每个

的全文
//h3/a

结果

2 个答案:

答案 0 :(得分:0)

MSDN documentation of string评论:

  

string()函数通过返回节点集中第一个节点的字符串值将节点集转换为字符串,这在某些情况下可能会产生意外结果。

这听起来像你正在经历的。你为什么一直使用string()

使用//h3/a/text()

答案 1 :(得分:0)

  

是否有类似strings()的东西,所以我可以得到每个

的全文
//h3/a 
     

结果

不,不在XPath 1.0中

来自 W3C XPath 1.0 Specification (关于XPath 1.0的唯一规范性文档):

  

“功能:字符串字符串(对象?)

     

字符串函数将对象转换为字符串,如下所示:

     

通过返回字符串值,将节点集转换为字符串   节点集中按文档顺序排在第一位的节点。“

因此,如果您只有XPath 1.0引擎可用,则需要选择所有//h3/a元素的节点集,然后选择托管XPath的编程语言,迭代每个节点并获取其字符串值。

在XPath 2.0中使用

//h3/a/string()

评估此XPath 2.0表达式的结果是一个字符串序列,每个字符串都是//h3/a个元素之一的字符串值。