Я хотел показать другой способ сделать это, который использует метод TextNode.splitText (offset). На самом деле ответ Дипака не так прост, но этот метод может оказаться полезным в других обстоятельствах.
splitText разбивает текстовый узел на два узла с заданным смещением строки. После разделения узел будет содержать исходный текст вплоть до смещения и будет иметь новый родной узел текста, содержащий текст после смещения, который возвращается.
Document doc = Jsoup.parse("<h1><a>Hello I am html</strong></h1>");
Element el = doc.selectFirst("a");
TextNode textNode = (TextNode) el.childNode(0);
textNode.splitText(textNode.text().indexOf("html")).wrap("<strong>");
System.out.println(doc.body().html());
См. Документы для TextNode#splitText(int)
и Node#wrap(html)
.