2011-07-04 28 views
1

我試圖讓前一個字符串「 - 」使用XPath在HTML頁面中一個段落內,並將其發送給YQL使用YQL與子-前的XPath

比如我想獲取日期從下面的文章:

 
<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(.,'--')]" 

,但它不工作。

我怎麼能得到文章的日期是前 ' - '

+0

好問題,+1。查看我的答案,獲得完整,簡短和簡單的解決方案。 –

回答

0

您可以簡單地使用:

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

我已經嘗試過了,但這沒有效果:( – Ruba

+0

@Ruba,我真的很抱歉,我犯了一個很大的錯誤(我今天很喜歡扔石頭)現在我已經糾正它了。 –

0

使用

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

此XPath表達式將評估爲XML文檔中第一個文本節點中緊接在'--'之前的字符串,即的子節點這是div頂部元素的子項。

如果您想獲得該值每一個這樣的文本節點,你必須使用類似的表達式:

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

,並評估該表達式$N次,$k = 1,2, ..., $N

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

請注意:儘量避免使用// XPath僞操作符總是在靜態地知道XML文檔的結構時。使用//通常會導致大的低效率(O(N^2)),這對於大型XML文檔而言尤其痛苦。