Создание 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.