|
1 | 1 | # jsoup Changelog |
2 | 2 |
|
3 | | -## 1.17.2 (Pending) |
| 3 | +## 1.17.2 (2023-Dec-29) |
4 | 4 |
|
5 | 5 | ### Improvements |
6 | 6 |
|
7 | | -* Added `Element.attribute(String)` and `Attributes.attribute(String)` to more simply obtain an `Attribute` object. |
8 | | - [2069](https://github.com/jhy/jsoup/issues/2069) |
9 | | -* If source tracking is on, and an Attribute's key is changed (via `Attribute.setKey(String)`), the source range is |
10 | | - now still tracked in `Attribute.sourceRange()`. [2070](https://github.com/jhy/jsoup/issues/2070) |
11 | | -* Added support for the `[*]` element with any attribute selector. And also restored support for selecting by an empty |
12 | | - attribute name prefix (`[^]`). [2079](https://github.com/jhy/jsoup/issues/2079) |
| 7 | +* **Attribute object accessors**: Added `Element.attribute(String)` and `Attributes.attribute(String)` to more simply |
| 8 | + obtain an `Attribute` object. [2069](https://github.com/jhy/jsoup/issues/2069) |
| 9 | +* **Attribute source tracking**: If source tracking is on, and an Attribute's key is changed ( |
| 10 | + via `Attribute.setKey(String)`), the source range is now still tracked |
| 11 | + in `Attribute.sourceRange()`. [2070](https://github.com/jhy/jsoup/issues/2070) |
| 12 | +* **Wildcard attribute selector**: Added support for the `[*]` element with any attribute selector. And also restored |
| 13 | + support for selecting by an empty attribute name prefix (`[^]`). [2079](https://github.com/jhy/jsoup/issues/2079) |
13 | 14 |
|
14 | 15 | ### Bug Fixes |
15 | 16 |
|
16 | | -* When tracking the source position of attributes, if source attribute name was mix-cased but the parser was |
17 | | - lower-case normalizing attribute names, the source position for that attribute was not tracked |
18 | | - correctly. [2067](https://github.com/jhy/jsoup/issues/2067) |
19 | | -* When tracking the source position of a body fragment parse, a null pointer exception was |
20 | | - thrown. [2068](https://github.com/jhy/jsoup/issues/2068) |
21 | | -* A multi-point encoded emoji entity may be incorrectly decoded to the replacement |
| 17 | +* **Mixed-cased source position**: When tracking the source position of attributes, if the source attribute name was |
| 18 | + mix-cased but the parser was lower-case normalizing attribute names, the source position for that attribute was not |
| 19 | + tracked correctly. [2067](https://github.com/jhy/jsoup/issues/2067) |
| 20 | +* **Source position NPE**: When tracking the source position of a body fragment parse, a null pointer |
| 21 | + exception was thrown. [2068](https://github.com/jhy/jsoup/issues/2068) |
| 22 | +* **Multi-point emoji entity**: A multi-point encoded emoji entity may be incorrectly decoded to the replacement |
22 | 23 | character. [2074](https://github.com/jhy/jsoup/issues/2074) |
23 | | -* (Regression) in a selector like `parent [attr=va], other`, the `, OR` was binding to `[attr=va]` instead of |
24 | | - `parent [attr=va]`, causing incorrect selections. The fix includes a EvaluatorDebug class that generates a sexpr |
25 | | - to represent the query, allowing simpler and more thorough query parse |
| 24 | +* **Selector sub-expressions**: (Regression) in a selector like `parent [attr=va], other`, the `, OR` was binding |
| 25 | + to `[attr=va]` instead of `parent [attr=va]`, causing incorrect selections. The fix includes a EvaluatorDebug class |
| 26 | + that generates a sexpr to represent the query, allowing simpler and more thorough query parse |
26 | 27 | tests. [2073](https://github.com/jhy/jsoup/issues/2073) |
27 | | -* When generating XML-syntax output from parsed HTML, script nodes containing (pseudo) CData sections would have an |
28 | | - extraneous CData section added, causing script execution errors. Now, the data content is emitted in a HTML/XML/XHTML |
29 | | - polyglot format, if the data is not already within a CData section. [2078](https://github.com/jhy/jsoup/issues/2078) |
30 | | -* The `:has` evaluator held a non-thread-safe Iterator, and so if an Evaluator object was shared across multiple |
31 | | - concurrent threads, a NoSuchElement exception may be thrown, and the selected results may be incorrect. Now, the |
32 | | - iterator object is a thread-local. [2088](https://github.com/jhy/jsoup/issues/2088) |
| 28 | +* **XML CData output**: When generating XML-syntax output from parsed HTML, script nodes containing (pseudo) CData |
| 29 | + sections would have an extraneous CData section added, causing script execution errors. Now, the data content is |
| 30 | + emitted in a HTML/XML/XHTML polyglot format, if the data is not already within a CData |
| 31 | + section. [2078](https://github.com/jhy/jsoup/issues/2078) |
| 32 | +* **Thread safety**: The `:has` evaluator held a non-thread-safe Iterator, and so if an Evaluator object was |
| 33 | + shared across multiple concurrent threads, a NoSuchElement exception may be thrown, and the selected results may be |
| 34 | + incorrect. Now, the iterator object is a thread-local. [2088](https://github.com/jhy/jsoup/issues/2088) |
33 | 35 |
|
34 | 36 | --- |
35 | 37 | Older changes for versions 0.1.1 (2010-Jan-31) through 1.17.1 (2023-Nov-27) may be found in |
|
0 commit comments