Выделите фоновые цвета некоторых слов в HTML-документе в Java
Я читаю HTML-документ как текст и извлекаю совпадающие строки (с начальным и конечным индексами) из документов на основе строкового массива. Теперь мне нужно изменить цвет фона этих извлеченных строк в исходном HTML-документе. Но я не должен менять формат HTML-файла.
поэтому я использую "javax.swing.text.DefaultHighlighter.DefaultHighlightPainter", который не изменит формат документа. После выделения я сохраняю файл локально, а затем просматриваю в браузере, чтобы увидеть цвета. Я не хочу использовать какие-либо редакторы для этого, так как мое намерение состоит в том, чтобы просмотреть в браузере. Но изменения цвета здесь не отражаются, я не понял, где была проблема. Вот мой пример кода.
public class TestEditer {
public static void main(String[] args) throws IOException, BadLocationException {
JEditorPane editor = new JEditorPane();
StringWriter writer = new StringWriter();
String output;
HTMLEditorKit htmlKit = new HTMLEditorKit();
List<Pattern> patternList = new ArrayList<Pattern>();
output = new Scanner(new File("C:/test.in")).useDelimiter("\\Z").next();//26787.in contains HTML text
editor.setText(output);
Document document = editor.getDocument();
String doc= document.getText(0, document.getLength());
System.out.println(document);
String[] names={"Shannon","Sperling","Kim","Tammy","Nancy","Lana"};
for (int i=0; i<names.length; i++)
{
String st = names[i];
Pattern p= Pattern.compile(st);
patternList.add(p);
}
System.out.println(patternList);
for (int i=0; i<patternList.size(); i++)
{
Matcher matcher = patternList.get(i).matcher(editor.getText());
int mStartPos=0;
int mEndPos=0;
while (matcher.find())
{
String matched = matcher.group();
System.out.println(matched);
mStartPos = matcher.start();
mEndPos = matcher.end();
System.out.println(mStartPos+" "+mEndPos);
DefaultHighlightPainter highlightPainter =new DefaultHighlightPainter(Color.RED);
editor.getHighlighter().addHighlight(mStartPos+1, mEndPos,
highlightPainter);
}
}
//htmlKit.write(writer, editor.getDocument(),0,editor.getDocument().getLength());
//String s=editor.getText();
File file = new File("C:/data/file.in");
editor.getEditorKit().write(writer,document,0,document.getLength());
String s1 = writer.toString();
FileWriter fw = new FileWriter(file.getAbsoluteFile());
BufferedWriter bw = new BufferedWriter(fw);
bw.write(s1);
bw.close();
}