在xpath中使用带有substring-before的YQL

时间:2011-07-04 12:06:45

标签: xpath substring yql

我试图在使用xpath的html页面的段落中的' - '之前获取一个字符串并将其发送到yql

例如,我想从以下文章中获取日期:

<div>
<p>Date --- the body of the article</p>
</div>

我在yql中尝试了这个查询:

select * from html where url="article url" and xpath="//div/p/text()/[substring-before(.,'--')]"

但它不起作用。

如何获得“ - ”

之前的文章日期

2 个答案:

答案 0 :(得分:0)

您可以简单地使用:

  substring-before(//div/p,'--')

答案 1 :(得分:0)

使用

substring-before(/div/p/text(), '--')

此XPath表达式求值为XML文档中第一个文本节点中紧邻'--'之前的字符串,即p的子级div的子级元件。

如果您想为每个此类文本节点获取此值,则必须使用如下表达式:

substring-before((//div/p/text())[$k], '--')

并为$N

评估此$k = 1,2, ..., $N次{。}}次

其中$Ncount(//div/p/text())

请注意:在静态了解XML文档的结构时,请尽量避免使用// XPath伪运算符。使用//通常会导致很大的低效率(O(N ^ 2))在大型XML文档中感觉特别痛苦。