как добавить тег внутри html, используя java - PullRequest
0 голосов
/ 19 февраля 2020

У меня есть HTML

<h1><a>Hello I am html</a></h1>

, чего я хочу достичь -

<h1><a>Hello I am <strong>html</strong></a></h1>

мой код: -

Document document = Jsoup.parse(HTML);

Element element = getElementUsingXpath(); // this is working fine 

String originalText = element.text();

String changedText = originalText.substring(0, 6 + 1)
                    + "<strong>"
                    + originalText.substring(6 + 1) +"</strong>";

element.text(changedText)

Но я получаю это

Hello I am <strong>html</strong> //this is wrong

Я ожидал, что это будет

Привет, я html

Ответы [ 2 ]

3 голосов
/ 19 февраля 2020

проблема решена с помощью приведенного ниже кода ... предложенного @ OHGODSPIDERS

Document document = Jsoup.parse(HTML);

Element element = getElementUsingXpath(); // this is working fine 

String originalText = element.text();

String changedText = originalText.substring(0, 6 + 1)
                    + "<strong>"
                    + originalText.substring(6 + 1) +"</strong>";

element. html (changeText)

1 голос
/ 21 февраля 2020

Я хотел показать другой способ сделать это, который использует метод 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).

...