jsoup 1.21.2 发布,Java HTML 解析器


jsoup 1.21.2 现已发布,新增了对 HTTP/2 连接中自定义SSLContext的支持,并提升了属性中用户数据处理方式的一致性。此外,它还提升了 DOM 操作和片段解析的性能,并修复了流解析、遍历、克隆和并发读取中的一些边缘情况。

变化

  • 已弃用的内部(但可见)方法Normalizer#normalize(String, bool)Attribute#shouldCollapseAttribute(Document.OutputSettings)。这些将在未来的版本中删除。
  • 已弃用Connection#sslSocketFactory(SSLSocketFactory),建议使用新的Connection#sslContext(SSLContext)。使用sslSocketFactory将强制使用旧HttpUrlConnection实现,该实现不支持 HTTP/2。#2370

改进

  • 当进行 pretty-printing 时,如果有连续的文本节点(通过 DOM 操作),则它们之间的非重要空白将被折叠。#2349。
  • 更新Connection.Response#statusMessage()为在使用HttpClient实现时返回一个简单的可记录字符串消息(例如“OK”),否则不会返回任何服务器设置的状态消息。#2356
  • Attributes#size()Attributes#isEmpty()现在​​​​​​​将所有内部属性(例如用户数据)排除在其计数之外。这与属性的序列化输出和迭代器保持一致。#2369
  • 添加Connection#sslContext(SSLContext)以向请求提供自定义 SSL (TLS) 上下文,同时支持HttpClient和旧版HttUrlConnection实现。#2370
  • 针对 DOM 操作方法的性能优化,包括在多次移除元素的第一个子元素(element.child(0).remove()),以及使用Parser#parseBodyFragement()解析大量直接子元素时的情景。#2373。​​​​​​​

错误修复

  • 当从 InputStream 进行解析并且多字节字符恰好跨越缓冲区边界时,流将无法完全读取。#2353。
  • NodeTraversor中,如果在head()调用期间删除了最后一个子元素,则父元素会被访问两次。#2355。
  • 克隆具有 Attributes 对象的 Element 会向该克隆添加一个空的内部用户数据属性,这会导致Attributes#size()Attributes#isEmpty()出现意外结果。#2356
  • 在多线程应用程序中,多个线程同时调用同一元素Element#children()时,该方法生成内部子元素缓存(其子节点的筛选视图)时可能会发生竞争条件。由于 DOM 对象的并发读取应该是线程安全的,无需外部同步,因此该方法已更新为原子执行。#2366
  • 格式错误的 HTML 可能会在 adoption agency 期间抛出 IndexOutOfBoundsException。#2377。

详情可查看:https://jsoup.org/news/release-1.21.2


相關推薦

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-06-24

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

2025-05-17

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

2025-07-01

x-easypdf是一个java语言简化处理pdf的框架,包含fop模块与pdfbox模块,fop模块以创建功能为主,基于xsl-fo模板生成pdf文档,以数据源的方式进行模板渲染;pdfbox模块以编辑功能为主,对标准的pdfbox进行扩展,添加了成吨的功能。

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 投票完成