Как получить первый div содержит текст внутри html / text? - PullRequest
0 голосов
/ 12 февраля 2011

Я использую JSOUP, и у меня есть html / text что-то вроде:

<html><head><style type="text/css">
</style></head>
<body><div style="font-family:times new roman,new york,times,serif;font-size:14pt">first text<br><div><br></div><div style="font-family: times new roman,new york,times,serif; font-size: 14pt;"><br><div style="font-family: times new roman,new york,times,serif; font-size: 12pt;"><font size="2" face="Tahoma"><hr size="1"><b><span style="font-weight: bold;">one:</span></b> second text<br><b><span style="font-weight: bold;">two:</span></b> third text<br><b><span style="font-weight: bold;">three:</span></b> fourth text<br><b><span style="font-weight: bold;">five:</span></b> fifth text<br></font><br>

, и я хочу извлечь первый div, который содержит текст (весь div), чтобы получить вывод вроде:

<div style="font-family:times new roman,new york,times,serif;font-size:14pt">first text<br></div>

и еще один вопрос - как получить первый HTML-тег (в общем), содержащий текст, означающий, что первый текст может быть внутри <p> или <span>

заранее спасибо

Ответы [ 3 ]

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

Вы можете использовать синтаксический анализатор в стиле SAX, например, TagSoup .

. Для этого инициализируйте анализатор расширенным DefaultHandler, чтобы кэшировать последний элемент, посещенный в локальном элементе.переменной, затем определите, когда в первый раз вызывается метод characters(...), и распечатайте кэшированный элемент и текстовый результат.

Найдите http://sax.sourceforge.net/quickstart.html, чтобы узнать, как настроить синтаксический анализатор.

0 голосов
/ 12 февраля 2011

Как насчет загрузки временного DOM (DOMFragment http://ejohn.org/blog/dom-documentfragments/), а затем обратиться к jQuery, чтобы найти нужный div внутри фрагмента?

0 голосов
/ 12 февраля 2011

Используйте анализатор HTML или, если вы знаете, что HTML - это XHTML, процессор XSLT

Вот список парсеров HTML с открытым исходным кодом.

...