Xquery提取文本

时间:2010-06-23 12:13:05

标签: xquery

我正在从html文档中提取文本并存储在数据库中。我正在使用webharvest工具来提取内容。但是我有点卡在某一点上。在webharvest内部,我使用XQuery表达式来提取数据。我正在解析的html文档如下:

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

我需要从上面的html脚本中提取“Hello world”文本。

我尝试以这种方式提取文本:

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

然而,我总是得到的是“HELLOWORLD”,而不是“Hello world”。

有没有办法提取“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>

我想提取hwe2和hw3之间的文本Hello world 2。我不想使用text()[3]但有一些方法可以在/ [[name ='hw2']和/ [[name ='hw3']之间提取文本。

1 个答案:

答案 0 :(得分:1)

首先,您正在寻找名称属性以“hw”开头的节点。这可以通过以下途径实现:

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

找到节点后,您想要检索一个节点后面的第一个文本节点。这可以这样做:

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