Я нашел несколько тем с похожими вопросами и ценными ответами, но я все еще борюсь с этим:
Я хочу проанализировать некоторый html с Jsoup, чтобы заменить, например,
"changeme"
с
<changed>changeme</changed>
но только если он отображается в текстовой части html, нет, если он является частью тега. Итак, начиная с этого html:
<body>
<p><a href="#" onclick="location.href='http://changeme.html'; return false;">test changeme app</a></p>
</BODY>
</HTML>
Я хотел бы получить следующее:
<body>
<p><a href="#" onclick="location.href='http://changeme.html'; return false;">test <changed>changeme</changed> app</a></p>
</BODY>
</HTML>
Я пробовал несколько подходов, и это приближает меня к желаемому результату:
Document doc = null;
try {
doc = Jsoup.parse(new File("tmp1450348256397.txt"), "UTF-8");
} catch (Exception ex) {
}
Elements els = doc.body().getAllElements();
for (Element e : els) {
if (e.text().contains("changeme")) {
e.html(e.html().replaceAll("changeme","<changed>changeme</changed>"));
}
}
html = doc.toString();
System.out.println(html);
Но при таком подходе я нахожу две проблемы:
<body>
<p><a href="#" onclick="location.href='http://<changed>changeme</changed> .html'; return false;">test
<changed>
changeme
</changed>
app</a></p>
</BODY>
</HTML>
-
Разрывы строк вставляются до и после нового элемента, который я представляю. Это не настоящая проблема, поскольку я могу избавиться от них, если я использую # changed # для замены и после doc.toString() я снова их заменю на нужное значение (с помощью < > ).
-
Реальная проблема: URL-адрес в href был изменен, и я не хочу, чтобы это произошло.
Идеи? спасибо.