2010-06-23 53 views
0

我正在從HTML文檔中提取文本並存儲在數據庫中。我正在使用webharvest工具來提取內容。不過,我有點卡住了。 webarvest內部我使用XQuery表達式來提取數據。我解析的html文件如下:Xquery提取文本

<td><a name="hw">HELLOWORLD</a>Hello world</td> 

我需要從上面的html腳本中提取「Hello world」文本。

我試圖以這種方式提取文本:

$hw :=data($item//a[@name='hw']/text()) 

但是我始終得到的是「HelloWorld」的,而不是「世界,你好」。

有沒有辦法提取「Hello World」。請幫忙。

如果我想這樣做是這樣的:

 <td> 
     <a name="hw1">HELLOWORLD1</a>Hello world1 
     <a name="hw2">HELLOWORLD2</a>Hello world2 
     <a name="hw3">HELLOWORLD3</a>Hello world3 
    </td> 

我想提取文本世界,你好2是在betweeb HW2和HW3。我不想使用text()[3],但有什麼方法可以在/ a [@ name ='hw2']和/ a [@ name ='hw3']之間提取文本。

回答

1

首先,您正在尋找名稱屬性以'hw'開頭的節點。這可以通過以下路徑來實現:

$item//a[starts-with(@name,'hw')] 

一旦你找到你想要檢索後面的一個節點的第一個文本節點的一個節點。這可以這樣做:

$item//a[starts-with(@name,'hw')]/following-sibling::text()[1] 
+0

非常感謝你解決問題 – Technocrat 2010-06-23 13:37:07