Xquery для извлечения текста

Я работаю над извлечением текста из документов HTML и хранения в базе данных. Я использую webharvest инструмент для извлечения содержания. Однако я отчасти упорно продолжил точку. Внутри webharvest я использую выражение XQuery inorder для извлечения данных. Документ HTML, который я анализирую, следующие:

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

Я должен извлечь "Привет мировой" текст из вышеупомянутого сценария HTML.

Я попытался извлечь текст этим способом:

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

Однако то, что я всегда получаю, является "HELLOWORLD" вместо "Привет мира".

Есть ли способ извлечь "Привет Мир". Помогите.

Что, если я хочу сделать это этот путь:

     <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. Я не хотел бы использовать текст () [3], но являюсь там некоторым способом, которым я мог извлечь текст между/a [@name ='hw2'] и/a [@name ='hw3'].

1
задан Technocrat 23 June 2010 в 12:13
поделиться

1 ответ

Прежде всего, вы ищете узлы a, атрибуты имен которых начинаются с 'hw'. Этого можно добиться следующим путем:

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

После того, как вы нашли узлы a, вам нужно получить первый текстовый узел, который следует за узлом a. Это можно сделать следующим образом:

$item//a[starts-with(@name,'hw')]/following-sibling::text()[1]
2
ответ дан 2 September 2019 в 23:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: