gpt4 book ai didi

java - 在 Java 中使用 Jsoup 替换多个标签内的 HTML 文本

转载 作者:行者123 更新时间:2023-12-02 05:34:54 24 4
gpt4 key购买 nike

我正在使用 java 逐行读取 HTML 文件。假设我有一个 HTML 行

<p> Hi everyone. This is a <em>dead end.</em> Do not go!</p>

我想将行中的文本更改为

<p> Hi everyone. This is not a <em>dead end.</em>You may go!</p>

输入将给出为

  • 更改自: 这是一个死胡同。别走!
  • 更改为: 这不是死胡同。你可以走了!

如何在不干扰 HTML 标签的情况下使用 Java 中的 Jsoup 或 java 中的任何其他方法来做到这一点。请帮忙

最佳答案

作为 MCL 解决方案的替代方案,这是一个完全基于 Jsoup 的解决方案:

首先,这是 Jsoup 如何查看您的 html:

org.jsoup.nodes.TextNode:    Hi everyone. This is a 
org.jsoup.nodes.Element: <em>dead end.</em>
org.jsoup.nodes.TextNode: Do not go!

所有三个节点都是 <p>...</p> 的子节点元素。

这是(非常详细的)代码:

final String html = "<p> Hi everyone. This is a <em>dead end.</em> Do not go!</p>";

Document doc = Jsoup.parseBodyFragment(html); // Parse html into a document
Element pTag = doc.select("p").first(); // Select the p-element (there's just one)


// Text before 'em'-tag
TextNode preEM = (TextNode) pTag.childNode(0);
preEM.text(preEM.text().replace("This is a", "This is not a"));

// Text after 'em'-tag
TextNode postEM = (TextNode) pTag.childNode(2);
postEM.text("You may go!");


System.out.println(pTag); // Print result

输出:

<p> Hi everyone. This is not a <em>dead end.</em>You may go!</p>

这将保留所有 html 格式和/或在完整文档中工作。

关于java - 在 Java 中使用 Jsoup 替换多个标签内的 HTML 文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25073461/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com