如何在Java中更改HTML标签内容?

2024-01-03

如何更改Java中标签的HTML内容?例如:

before:

<html>
    <head>
    </head>
    <body>
        <div>text<div>**text**</div>text</div>
    </body>
</html>

after:

<html>
    <head>
    </head>
    <body>
        <div>text<div>**new text**</div>text</div>
    </body>
</html>

我尝试过 JTidy,但不支持getTextContent。还有其他解决办法吗?


谢谢,我想解析没有格式良好的 HTML。我尝试了 TagSoup,但是当我有以下代码时:

<body>
sometext <div>text</div>
</body>

我想将“sometext”更改为“someAnotherText”,当我使用{bodyNode}.getTextContent()它给了我:“sometext text”;当我使用setTextContet("someAnotherText"+{bodyNode}.getTextContent()),并将这些结构序列化,结果是<body>someAnotherText sometext text</body>, 没有<div>标签。这对我来说是个问题。


除非您完全确定 HTML 有效且格式良好,否则我强烈建议使用 HTML 解析器,例如TagSoup http://www.ccil.org/~cowan/XML/tagsoup/, Jericho http://jericho.htmlparser.net/docs/index.html, NekoHTML http://www.apache.org/~andyc/neko/doc/html/, HTML解析器 http://htmlparser.sourceforge.net/等等,前两个对于解析任何类型的垃圾特别强大:)

例如,与HTML解析器 http://htmlparser.sourceforge.net/(因为实现很容易),使用visitor http://htmlparser.sourceforge.net/javadoc/org/htmlparser/visitors/package-summary.html,提供您自己的NodeVisitor http://htmlparser.sourceforge.net/javadoc/org/htmlparser/visitors/NodeVisitor.html:

public class MyNodeVisitor extends NodeVisitor {
    public MyNodeVisitor() {
    }

    public void visitStringNode (Text string)
    {
        if (string.getText().equals("**text**")) {
            string.setText("**new text**");
        }
    }
}

然后,创建一个Parser http://htmlparser.sourceforge.net/javadoc/org/htmlparser/Parser.html,解析HTML字符串并访问返回的节点列表:

Parser parser = new Parser(htmlString);
NodeList nl = parser.parse(null);
nl.visitAllNodesWith(new MyNodeVisitor());
System.out.println(nl.toHtml());

这只是实现这一点的一种方法,非常简单。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在Java中更改HTML标签内容? 的相关文章

随机推荐

  • 如何在 Rails 2.3.5 中安装/使用 Devise?

    我尝试从 Github 上 Devise 的 v 1 2 oauth 分支进行安装 但仍然出现错误 如何在 Rails 2 3 5 应用程序上安装 devise gem 我特别想要一个可以与omniauth一起使用的 gem install
  • Mac App Store:放弃 32 位支持转而支持 ARC,32 位版本的现有用户会看到更新消息吗?

    我正在考虑放弃 32 位支持 转而支持自动引用计数 仅支持 64 位二进制文 件 我想在 Mac App Store 中避免出现这两种情况 For a 旧 32 位 Mac 用户 谁购买了支持 32 位的先前版本 他们会在 Mac App
  • Python 中是否有用于纯文本文件的本机模板系统?

    我正在寻找用于将输出格式化为简单文本的 Python 技术或模板系统 我需要的是它将能够迭代多个列表或字典 如果我能够将模板定义到单独的文件 如output templ 中而不是将其硬编码到源代码中 那就太好了 作为我想要实现的简单示例 我
  • 如何从9GAG获取数据json

    也许你认为这是一个愚蠢的问题 但我希望你能给我一些建议 我的问题 当我查看 9gag com 的源代码时 我意识到他们有一些行代码来加载更多内容 div class loading a class btn badge load more p
  • PyYAML 中的数组没有缩进或空格

    在下面的代码中我创建了net plan dict变量字典并将其转换为YAML格式文件 在字典里我有一个叫做addresses这是一个由三个元素组成的数组 创建YAML文件后 这三个数组元素没有放置在addresses field impor
  • JPA针对不同数据库的不同列类型

    是否可以根据使用的数据库使用 JPA 定义不同的列类型 我需要将 id 存储为 uuid 并且它必须是可移植的 那就是问题所在 PostgreSQL有 uuid MSSQL有 uniqueidentifier 而Oracle什么都没有 我想
  • android中textview的圆角

    我有一个文本视图 希望它的角是圆形的 我已经知道可以使用android background drawable somefile 就我而言 该标签已包含在内 因此无法再次使用 例如android background drawable my
  • Rails 更改 form_for 中提交的路由

    我有一个模型 文章 和一个嵌套在文章中的模型 评级 文章 123 评级 我想更改 ratings form html erb 中 f submit 的路由 现在是这样 按提交后 我的申请路由到 评分 111 但我想将其路由到 文章 123
  • WCF 服务应该返回 EntityObject 还是 POCO/DTO 类?

    我一直在查看很多使用 EntityFramework 的 WCF 示例 其中大多数似乎都会向客户端返回某种 POCO 或 DTO 类 我想知道为什么这是默认的EntityObject包括 DataContract 属性和工具INotifyP
  • Angula2 Karma 无法加载“webpack”!

    我已经在 Angular2 项目 Webpack Karma 上工作了几个月 该项目基于此入门程序的稍旧版本 https github com preboot angular2 webpack https github com preboo
  • 带注入的定制 Serilog 水槽?

    我创建了一个简单的 Serilog 接收器项目 如下所示 namespace MyApp Cloud Serilog MQSink public class MessageQueueSink ILogEventSink private re
  • 无法使用@Value在Spring应用程序中获取maven project.version属性

    如何使用 Value注释在Spring Boot应用程序中获取maven project version属性 经过一些关于如何在 SpringBoot 应用程序中获取 Maven 项目版本的研究和试验后 我找不到任何适合我的东西 由于类加载
  • 为 Goldschmidt 部门挑选良好的初步估计

    我正在计算 Q22 10 中的定点倒数戈德施密特师 http en wikipedia org wiki Division digital Goldschmidt division用于我的 ARM 上的软件光栅器 只需将分子设置为 1 即可
  • 实体 .ToList() 生成 System.OutOfMemoryException

    我有一个包含 50 万行的表 我需要更新每一行 但 ToList 失败 List
  • 数组访问可以优化吗?

    也许我被我的分析器 Netbeans 误导了 但我看到了一些奇怪的行为 希望这里有人可以帮助我理解它 我正在开发一个应用程序 它大量使用相当大的哈希表 键是长整型 值是对象 内置的 java 哈希表 特别是 HashMap 的性能非常差 在
  • SonarQube 临时磁盘空间

    我发现 SonarQube 正在使用lot其临时目录中的磁盘空间 是否有某种定期运行的清理程序来清除它 opt codehaus releases sonarqube sonarqube 5 1 temp 29 7GiB tmp
  • UIViewController调用对方的delegate

    我有两个 UIViewController 每个都有它的委托 并且正在调用其中一个 一个类称为 TopicViewController 另一个类称为 MentionViewController 代码如下所示 import
  • JavaScript 中比较 null 与 undefined 的速度

    我刚刚运行了一个非常简单的 JavaScript性能测试 http jsperf com js coerce null 不要问为什么 该测试声明了一个变量 但没有为其分配任何内容 var x 然后它比较比较值变量的速度null 并undef
  • Rails 3 / Devise:不再创建密码盐?

    我已经在一个项目上工作了一段时间 该项目使用 Devise 进行用户身份验证 每当创建用户时 它都会为他们生成密码盐及其加密密码 当我进入这个项目的尾声时 我正在测试用户注册 并注意到我的新角色没有在数据库中为这些新用户创建密码盐 而我的旧
  • 如何在Java中更改HTML标签内容?

    如何更改Java中标签的HTML内容 例如 before div text div text div text div after div text div new text div text div 我尝试过 JTidy 但不支持getT