Создание HTMLDocument из строки HTML (в Java)

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

 javax.swing.text.html.HTMLDocument

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

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

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

3 ответов


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

Edit: чтобы дать пример, в основном я думаю, что это можно сделать так (aftrer код выполняется,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);

согласен с mouser, но небольшая коррекция

Reader stringReader = new StringReader(string);
HTMLEditorKit htmlKit = new HTMLEditorKit();
HTMLDocument htmlDoc = (HTMLDocument) htmlKit.createDefaultDocument();
htmlKit.read(stringReader, htmlDoc, 0);

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