Android: разбирать HTML-код - PullRequest
       0

Android: разбирать HTML-код

2 голосов
/ 16 февраля 2011

У меня есть следующий фрагмент HTML-кода, который мне нужно проанализировать, чтобы получить имя игрока и результаты, которые он набрал. В данном случае это «Росс Тейлор» и 9. Как лучше всего разобрать эту информацию? Не хочу использовать анализатор HTML. Является ли REGEX лучшим способом (я знаю, что люди мертвы против этого! Но я просто хочу эти 2 бита информации и, следовательно, не хочу использовать парсер)? Я ломал голову над тем, как мне выяснить, где находится имя игрока в html-файле и в следующей строке, в которой забиты заезды. Часть HTML-комментария ниже жестко запрограммирована. Я могу добраться до этого места. Затем найдите имя между тегами. Это хороший способ сделать это? Кроме того, как мне получить часть прогонов в ближайшем следующем ряду?


<!-- <a href="javascript:void(0);" onClick="return showHwkTooltip(this, 'lvpyrbat1');" class="livePlayerCurrent">*Luke Woodcock</a>-->

<a href="/icc_cricket_worldcup2011/content/current/player/38920.html" target="_blank" class="livePlayerCurrent" title="view the player profile for Ross Taylor">
*Ross Taylor
</a>    <span style="margin-left:5px;" title="left-hand bat">(lhb)</span >

   </td >
   <td><b>9</b></td>
   <td>9</td>
   <td>1</td>
   <td>0</td>
   <td>100.00</td>
   <td></td>
   <td colspan="3" align="left"><span class="batStyl">striker</style></td>
   <td></td>
   <td colspan="8"></td>
  </tr>

Пожалуйста, дайте мне знать, если вам нужна дополнительная информация.

С уважением, Sam

Ответы [ 3 ]

9 голосов
/ 16 февраля 2011

Как лучше всего разобрать эту информацию?

Используйте анализатор HTML.

Не хочу использовать анализатор HTML.

Я не согласен.

Является ли REGEX лучшим способом

номер

1 голос
/ 16 февраля 2011

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

Если вы действительно хотите сделать это с помощью регулярных выражений, вы можете попробовать следующее:

Извлечь счет

  (?<=\\<b\\>)\\d+(?=\\</b\\>)

Извлечь имя игрока

  (?<=\\>)[^\\<]+(?=\\</a\\>)

Второе регулярное выражение предполагало, что вы продезинфицировали xml, удалив привязку между тегами комментариев.

 <!-- ... -->

Что он делает, он извлекает значение из любой привязки.Это одно из фундаментальных ограничений при использовании регулярных выражений, оно не учитывает контекст.

0 голосов
/ 22 марта 2012

Что бы это ни стоило, вы также можете взглянуть на Jsoup .Я использовал его в своих проектах, и он очень хорошо справляется с искаженным HTML.Я считаю, что это может быть единственная причина, по которой я его использую;)

С уважением, EZFrag

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