Помогите извлечь текст из таблицы HTML используя xpath - PullRequest
2 голосов
/ 17 октября 2010

Я пытаюсь вытянуть текст между тегами nobr.

Это часть таблицы:

       <table class="report-main-table dirLTR NormalTxt" width="100%" border="0" cellspacing="0" cellpadding="0">

<thead>

<tr>

<td class="report-data-title-cell report-data-column-odd"><nobr><b>&#1505;&#1492;"&#1499; &#1506;&#1500;&#1493;&#1514; &#1489;&#1513;"&#1495;</b></nobr></td><td class="report-data-title-cell report-data-column-even"><nobr><b>&#1497;&#1506;&#1491; &#1492;&#1513;&#1497;&#1495;&#1492;</b></nobr></td><td class="report-data-title-cell report-data-column-odd"><nobr><b>&#1505;&#1493;&#1490; &#1513;&#1497;&#1495;&#1492;</b></nobr></td><td class="report-data-title-cell report-data-column-even"><nobr><b>&#1505;&#1492;"&#1499; &#1494;&#1502;&#1503; &#1488;&#1493;&#1497;&#1512; &#1500;&#1495;&#1497;&#1493;&#1489;</b></nobr></td><td class="report-data-title-cell report-data-column-odd"><nobr><b>&#1492;&#1502;&#1505;&#1508;&#1512; &#1513;&#1495;&#1493;&#1497;&#1490;</b></nobr></td><td class="report-data-title-cell report-data-column-even"><nobr><b>&#1513;&#1506;&#1514; &#1513;&#1497;&#1495;&#1492;</b></nobr></td><td class="report-data-title-cell report-data-column-odd"><nobr><b>&#1514;&#1488;&#1512;&#1497;&#1498; &#1513;&#1497;&#1495;&#1492;</b></nobr></td>

</tr>

</thead>

<tr class="report-data-row-even">

<td class="NormalTxt report-data-cell report-data-column-even"><nobr>0.0285</nobr></td><td class="NormalTxt report-data-cell report-data-column-odd"><nobr>&#1508;&#1512;&#1496;&#1504;&#1512;</nobr></td><td class="NormalTxt report-data-cell report-data-column-even"><nobr>SMS</nobr></td><td class="NormalTxt report-data-cell report-data-column-odd"><nobr>1</nobr></td><td class="NormalTxt report-data-cell report-data-column-even"><nobr>054-2570130</nobr></td><td class="NormalTxt report-data-cell report-data-column-odd"><nobr>00:14:09</nobr></td><td class="NormalTxt report-data-cell report-data-column-even"><nobr>27/09/2010</nobr></td>

</tr>

<tr class="report-data-row-odd">

<td class="NormalTxt report-data-cell report-data-column-even"><nobr>0.0000</nobr></td><td class="NormalTxt report-data-cell report-data-column-odd"><nobr>&#1505;&#1500;&#1511;&#1493;&#1501;</nobr></td><td class="NormalTxt report-data-cell report-data-column-even"><nobr>SMS</nobr></td><td class="NormalTxt report-data-cell report-data-column-odd"><nobr>1</nobr></td><td class="NormalTxt report-data-cell report-data-column-even"><nobr>052-3669127</nobr></td><td class="NormalTxt report-data-cell report-data-column-odd"><nobr>00:47:25</nobr></td><td class="NormalTxt report-data-cell report-data-column-even"><nobr>27/09/2010</nobr></td>

</tr>

Я пробовал это выражение xpath: // table / tr/ td / nobr /, но это не сработало.

Какое правильное выражение xpath?

Спасибо

Ответы [ 2 ]

0 голосов
/ 17 октября 2010

Используйте

//nobr

Это может быть более эффективно, чем:

//table//td/nobr

, поскольку сокращение // вызывает полный обход дерева, корня которого находится в текущем узле, и мы имеем сокращение // только один раз в первом выражении, но дважды в последнем.

Всегда старайтесь избегать использования сокращения //, когда вы знаете структуру XML-документа.

0 голосов
/ 17 октября 2010

Попробуйте //table//td/nobr.

РЕДАКТИРОВАТЬ : По запросу, вот логика выражения.

Ищем внутренний текст nobr элементов (nobr)

  • внутри ячеек таблицы (td/nobr),
  • , которые являются потомками всех таблиц в документе (//table//td/nobr: здесь мы пропускаем элементы tr и элементы thead, tbody и tfoot, которые могут находиться между table и td elements.
...