-
Notifications
You must be signed in to change notification settings - Fork 2.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Problems with Elements class array methods updating the DOM #2100
Comments
I don't think I follow what circumstances would break the DOM? What action are you doing that you are modifying the Elements but don't want those modification to go back to the DOM? Perhaps there could be a |
A reading app that uses a custom set of rule executors to extract book information, chapter lists, content, etc. from the website. In the internal processing of the rule executor, Elements is used to store the acquired elements, and sometimes the array needs to be cleared and re-added. The new version of jsoup will delete the elements in the dom at the same time after clearing the array, which will cause the dom to be destroyed. |
OK, I guess I'm not clear on why you'd clear and re-add elements vs using a different variable / re-select. Hard to suggest another approach without more detail. But as far as I can guess, a |
What does it mean to use different variables? I wish there was a global switch that controlled this behavior so I didn't have to modify the code everywhere. There is another problem, some third-party libraries that rely on jsoup will also have this problem, such as: JsoupXpath, these libraries also perform similar operations as me. |
Can you link me the example in JsoupXpath so I can see the context? |
Hi, any updates here? |
@821938089 when I have an update I will definitely post it here. Currently I am leaning towards a method like |
Since 1.17.1 the array method of the Elements class will update the DOM, this behavior is not what I expected and could potentially cause some problems (e.g. accidentally breaking the DOM).
To be honest, I don't think modifying arrays should update the DOM, this behavior seems counter-intuitive to me.
If this cannot be changed back, I suggest adding an ElementList class, which is equivalent to the previous Elements class.
The inheritance could be ArrayList -> ElementList -> Elements.
The two classes provide a method to convert between them.
The text was updated successfully, but these errors were encountered: