Java (Android) регулярное выражение для удаления абзаца HTML - PullRequest
0 голосов
/ 19 апреля 2010

У меня есть приложение для Android, которое получает некоторые данные из внешнего источника XML. Я удалил часть HTML из одного из элементов XML, но он имеет формат:

<p class="x">Some text...</p>
<p>Some more text</p>
<p>Some final text</p>

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

Ответы [ 5 ]

1 голос
/ 19 апреля 2010

RegEx соответствует открытым тегам, кроме автономных тегов XHTML

Итак, я задам вопрос, который завершает связанный ответ: пробовали ли вы вместо этого использовать парсер XML?

Вы можете также получить некоторые идеи из некоторых других ответов, но я постараюсь избежать пути регулярных выражений. Как предложил Macarse, очистите это на сервере, если можете. Если нет, оберните эти три <p> элемента в один корневой элемент и проанализируйте его, используя SAX или что-то еще, обращая внимание на элемент 2-го абзаца.

0 голосов
/ 19 апреля 2010

Регулярное выражение будет выглядеть примерно так: .*?>(.*?)<.* И вы получаете доступ к сгруппированному контенту, вызывая group (1) для объекта Matcher.

0 голосов
/ 19 апреля 2010

Если вы собираетесь анализировать XML-файл, загруженный с веб-сайта, то Android не имеет никакого отношения.

0 голосов
/ 19 апреля 2010

просто делим: http://developer.android.com/reference/java/lang/String.html#split(java.lang.String)

на "</p><p>" и получение второй записи в возвращенном массиве на самом деле сделает это довольно быстро

0 голосов
/ 19 апреля 2010

Если это просто, просто сделайте регулярное выражение.

Если вы получаете XML из внешнего источника, которым вы владеете, я бы проанализировал его там.

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