jsoup 1.17.2 现已发布。jsoup 是一个用于处理 real-world HTML 的 Java 库。它使用最好的 HTML5 DOM 方法和 CSS 选择器提供了一个非常方便的 API 用于提取和操作数据。
下载地址:https://jsoup.org/download
具体更新内容包括:
改进
- Attribute object accessors:添加
Element.attribute(String)
和Attributes.attribute(String)
以便更简单地获取Attribute
对象。2069 - Attribute source tracking:如果 source tracking 已打开,并且属性的键已更改(通过
Attribute.setKey(String)
),则现在仍会在Attribute.sourceRange()
中跟踪 source range。2070 - Wildcard attribute selector:添加了对具有任何属性选择器的
[*]
元素的支持。并且还恢复了对通过空属性名称前缀 ([^]
) 选择的支持。2079
Bug 修复
- Mixed-cased source position:跟踪属性的源位置时,如果源属性名称是混合大小写的,但解析器是小写规范化属性名称,则无法正确跟踪该属性的源位置。2067
- Source position NPE:跟踪正文片段解析的源位置时,抛出空指针异常。2068
- Multi-point emoji entity:多点编码的表情符号实体可能会被错误地解码为替换字符。2074
- Selector sub-expressions:(回归)在像
parent [attr=va], other
之类的选择器中,, OR
被绑定到[attr=va]
而不是parent [attr=va]
,导致不正确的选择。该修复包含一个 EvaluatorDebug 类,可生成一个 sexpr 来表示查询,从而使查询解析测试更简单、更彻底。2073 - XML CData output:从解析的 HTML 生成 XML 语法输出时,包含(伪)CData部分的脚本节点将添加无关的 CData 部分,从而导致脚本执行错误。现在,
如果数据尚未位于 CData部分中,则数据内容将以 HTML/XML/XHTML 多语言格式发出。2078 - Thread safety:
:has
evaluator 持有一个非线程安全的迭代器,因此如果多个并发线程共享一个 Evaluator object,可能会抛出 NoSuchElement 异常,并且选择的结果可能不正确。现在,迭代器对象是线程本地的。2088
更新说明:https://github.com/jhy/jsoup/releases/tag/jsoup-1.17.2