Создание HTMLDocument из строки HTML (в Java) - PullRequest
6 голосов
/ 14 июля 2011

Я работаю над методом, который принимает строку HTML и возвращает аналогичный

 javax.swing.text.html.HTMLDocument

Какой самый эффективный способ сделать это?

То, как яв настоящее время это делается для использования синтаксического анализатора SAX для анализа строки HTML.Я отслеживаю, когда нажимаю на открытые теги (например, ).Когда я нажимаю на соответствующий закрывающий тег (например, ), я применяю стиль курсива к символам, между которыми я нажимаю.

Это, конечно, работает, но недостаточно быстро.Есть ли более быстрый способ сделать это?

Ответы [ 3 ]

8 голосов
/ 15 июля 2011

Согласен с mouser, но небольшая поправка

Reader stringReader = new StringReader(string);
HTMLEditorKit htmlKit = new HTMLEditorKit();
HTMLDocument htmlDoc = (HTMLDocument) htmlKit.createDefaultDocument();
htmlKit.read(stringReader, htmlDoc, 0);
4 голосов
/ 14 июля 2011

Попробуйте использовать HtmlEditorKit класс. Он поддерживает синтаксический анализ HTML-контента, который можно прочитать непосредственно из String (например, до StringReader). Кажется, есть статья о том, как это сделать.

Редактировать: Чтобы привести пример, в основном я думаю, что это можно сделать так (после выполнения кода htmlDoc должен содержать загруженный документ ...):

Reader stringReader = new StringReader(string);
HTMLEditorKit htmlKit = new HTMLEditorKit();
HTMLDocument htmlDoc = (HTMLDocument) htmlKit.createDefaultDocument();
HTMLEditorKit.Parser parser = new ParserDelegator();
parser.parse(stringReader, htmlDoc.getReader(0), true);
0 голосов
/ 14 июля 2011

Вы можете попробовать использовать метод HTMLDocument.setOuterHTML.Просто добавьте случайный элемент и замените его впоследствии вашей строкой HTML.

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