jsoup 1.21.1 发布,Java HTML 解析器


jsoup 1.21.1 现已发布。此版本具有强大的全新节点选择功能,可让用户使用 CSS 选择器锁定特定的 DOM 节点(例如注释和文本节点)、通过新的 TagSet 回调系统进行动态标签自定义,并通过简化的属性转义增强了对突变 XSS 攻击的防御能力。

此版本还默认提供 HTTP/2 支持,并进行了多项 API 改进以提升开发者体验,并修复了多个 edge-case parsing 问题。

Changes

  • 删除了以前弃用的方法。#2317
  • 由于:matchTextpseduo-selector 对 DOM 的副作用,已将其弃用;改用新的::textnode selector Element#selectNodes(String css, Class<T> type)方法。#2343
  • 已弃用Connection.Response#bufferUp(),以代替Connection.Response#readFully(),后者会抛出一个已检查的 IOException。
  • 已弃用的内部方法 Validate#ensureNotNull(Object)(由 typed Validate#expectNotNull(T)替代);来自 Attribute 和 Node 的受保护 HTML 附加程序。
  • 如果你碰巧正在使用任何已弃用的方法,官方建议立即借此机会迁移它们,因为它们将在未来的版本中被删除。

Improvements

  • 增强了Selector,支持直接匹配注释和文本节点等节点。#2324
  • 新增 TagSet#onNewTag(Consumer<Tag> customizer):注册一个回,当每个新的或克隆的标签插入到集合中时,都会调用该回调函数。该函数支持动态调整标签选项(例如,将所有自定义标签标记为自闭合,或将给定命名空间中的所有内容标记为保留空格)。#2330
  • 使TokenQueueCharacterReader可自动关闭,以确保它们将缓冲区释放回缓冲池,以供以后重用。
  • 添加了Selector#evaluatorOf(String css),以更清晰的方式从 CSS 查询中获取评估器。这是QueryParser.parse(String css)的别名。
  • 可以将外部命名空间(例如 SVG)中的自定义标签(通过TagSet定义)配置为数据标签进行解析。
  • 添加NodeVisitor#traverse(Node)以简化节点遍历调用(相对于导入NodeTraversor)。
  • 更新了默认用户代理字符串以提高兼容性。#2341
  • HTML 解析器现在允许为已知标签自定义特定的文本数据类型 (Data、RcData)。(之前此功能仅支持自定义标签。)#2326
  • 添加了Connection.Response#readFully(),以替代Connection.Response#bufferUp(),并明确了 IOException。同样,添加Connection.Response#readBody()代替Connection.Response#body()。已弃用Connection.Response#bufferUp()。#2327
  • 序列化 HTML 时,属性中的<>字符现在会被转义。这有助于防止一类变异 XSS 攻击。#2337
  • 已更改Connection为优先使用 JDK 的 HttpClient 而非 HttpUrlConnection(如果可用),以默认启用 HTTP/2 支持。用户可以通过禁用-Djsoup.useHttpClient=false关闭该功能。#2340

Bug Fixes

  • svg外部上下文中的script内容应被解析为脚本数据,而非文本。#2320
  • Tag#isFormSubmittable()正在更新标签的选项。#2323
  • 当文本跟在块元素中的内联元素之后时,HTML pretty-printer 会错误地修剪空格。#2325
  • 名称中带有连字符或其他非字母字符的自定义标签现在可以正确用作 Data 或 RcData 标签。它们的结束标签现在也能正确标记。#2332
  • 克隆元素时,克隆将保留源的缓存子元素列表(如果有),这可能导致在修改克隆的子元素时出现不正确的结果。#2334

更新说明:https://jsoup.org/news/release-1.21.1


相關推薦

2022-08-25

jsoup 1.15.3 现已发布,包括针对潜在 XSS 攻击的安全修复,以及其他改进,包括更具描述性的验证错误消息。jsoup 是一个用于处理 real-world HTML 的 Java 库。它使用最好的 HTML5 DOM 方法和 CSS 选择器提供了一个非常方便的 API 用于

2023-12-31

jsoup 1.17.2 现已发布。jsoup 是一个用于处理 real-world HTML 的 Java 库。它使用最好的 HTML5 DOM 方法和 CSS 选择器提供了一个非常方便的 API 用于提取和操作数据。 下载地址:https://jsoup.org/download 具体更新内容包括: 改进 Attrib

2023-10-22

,相约开源PHP办公室,我们一起聊 AI!>>> jsoup 1.16.2 现已发布。jsoup 是一个用于处理 real-world HTML 的 Java 库。它使用最好的 HTML5 DOM 方法和 CSS 选择器提供了一个非常方便的 API 用于提取和操作数据。 下载地址:https://jsoup.org/

2024-07-12

jsoup 1.18.1 现已发布,新的流解析器提供了混合 DOM + SAX 事件驱动的解析接口、请求进度跟踪和许多其他改进。jsoup 是一个用于处理 real-world HTML 的 Java 库。它使用最好的 HTML5 DOM 方法和 CSS 选择器提供了一个非常方便的 API 用

2023-05-06

jsoup 1.16.1 现已发布。jsoup 是一个用于处理 real-world HTML 的 Java 库。它使用最好的 HTML5 DOM 方法和 CSS 选择器提供了一个非常方便的 API 用于提取和操作数据。 下载地址:https://jsoup.org/download 具体更新内容包括: Improvements

2023-02-21

jsoup 1.15.4 现已发布,其中包括了一些改进,尤其是在 pretty-printing HTML 时;以及一些错误的修正。jsoup 是一个用于处理 real-world HTML 的 Java 库。它使用最好的 HTML5 DOM 方法和 CSS 选择器提供了一个非常方便的 API 用于提取和操作

2023-11-28

jsoup 1.17.1 现已发布,支持 request-level 身份验证、属性名称和值源范围、stream( ) 可迭代支持以及大量其他改进和错误修复。jsoup 是一个用于处理 real-world HTML 的 Java 库。它使用最好的 HTML5 DOM 方法和 CSS 选择器提供了一

2025-05-17

用JavaScript编写的HTML处理工具,通过插件机制来完成HTML的解析和转换。虽然PostHTML生态丰富,有着大量现成的插件可用,但其解析能力始终无法企及浏览器级别。 为了彻底解决这个问题,Parcel团队转向了「重型武器」——直接

2023-03-06

Pandoc 3.1.1 发布了,Pandoc 是一个通用标记转换 Haskell 库,用于从一种标记格式转换为另一种,同时也是一个使用该库的命令行工具,它可以转换 28 种标记格式。 此版本带来如下更改: TSV 阅读器:不将制表符当作空格 ( #8661 )

2023-07-09

YMP 是一个非常简单、易用的轻量级 Java 应用开发框架,涵盖 AOP、IoC、WebMVC、ORM、Validation、Plugin、Serv、Cache 等特性,主要技术特点: 采用组件化、模块方式打包,可按需装配,灵活可扩展; 采用微内核实现 AutoScan、AOP、

2023-02-13

Fastcms 是基于 SpringBoot 前后端分离技术,且具有插件化架构的 CMS 系统,系统具有高扩展性,易维护性,可以快速搭建网站,微信小程序,是开发微信营销插件的基石 Fastcms 是真正意义上的插件化开源项目,支付,搜索,订单催

2022-10-27

目前PHP8.2已经进入RC阶段,按计划还有一个月就会发布正式版。而PHP8.3的决议也早已开始推进了。 本文为大家介绍一个最新通过的决议,也是PHP8.3的第一个决议:内置JSON验证函数。 这项决议在2022-08-14发起,2022-10-07 投票完成

2023-07-11

持从项目外部加载源代码来生成字段注释 (包括标准规范发布的 jar 包)。 支持生成多种格式文档:Markdown、HTML5、Asciidoctor、Postman collection、Open Api 3.0+。 轻易实现在 Spring Boot 服务上在线查看静态 HTML5 api 文档。 开放文档数据

2022-07-06

OpenAPI Generator v6.0.1 现已发布。OpenAPI Generator 可用于在给定 OpenAPI 规范(v2, v3)的情况下自动生成 API 客户端库、server stubs、文档以及配置。 v6.0.1 是一个包含增强功能的补丁版本,修复了涵盖 20 种编程语言的错误。有关更改