【问题标题】:how to append a tag inside an html using java如何使用java在html中附加标签
【发布时间】:2020-02-21 10:58:09
【问题描述】:

我有一个 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

【问题讨论】:

  • 你在 te changedText 中有
  • 抱歉错字,请立即检查
  • 既然你想写html而不是文本,你应该试试the html(String) method
  • 非常感谢@OHGODSPIDERS

标签: java jsoup xsoup


【解决方案1】:

问题已通过以下代码解决...@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(更改文本)

【讨论】:

    【解决方案2】:

    我想展示另一种方法,即使用 TextNode.splitText(offset) 方法。 Deepak 的回答并没有真正简单,但该方法在其他情况下可能很方便。

    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) 的文档。

    【讨论】:

      猜你喜欢
      • 2015-12-05
      • 2018-12-30
      • 1970-01-01
      • 2018-02-15
      • 1970-01-01
      • 2019-02-25
      • 1970-01-01
      • 2021-11-12
      • 1970-01-01
      相关资源
      最近更新 更多