J'utilise JSoup parser pour trouver des parties particulières d'un document html (défini par regex) et le mettre en surbrillance en enveloppant la chaîne trouvée dans la balise <span>
. Voici mon code qui fait la mise en évidence -Mettre en évidence en utilisant Regex dans JSOUP pour android
public String highlightRegex() {
Document doc = Jsoup.parse(htmlContent);
NodeTraversor nd = new NodeTraversor(new NodeVisitor() {
@Override
public void tail(Node node, int depth) {
if (node instanceof Element) {
Element elem = (Element) node;
StringBuffer obtainedText;
for(Element tn : elem.getElementsMatchingOwnText(pat)) {
Log.e("HELLO", tn.baseUri());
Log.e("HELLO", tn.text());
obtainedText = new StringBuffer(tn.ownText());
mat = pat.matcher(obtainedText.toString());
int nextStart = 0;
while(mat.find(nextStart)) {
obtainedText = obtainedText.replace(mat.start(), mat.end(), "<span>" + mat.group() + "</span>");
nextStart = mat.end() + 1;
}
tn.text(obtainedText.toString());
Log.e("HELLO" , "AFTER:" + tn.text());
}
}
}
@Override
public void head(Node node, int depth) {
}
});
nd.traverse(doc.body());
return doc.toString();
}
Il fonctionne, mais la balise <span>
est visible à l'intérieur du WebView. Qu'est-ce que je fais mal?