如何解决通过在其上调用 appendTo 更改了 Jsoup 元素
我有一个 Jsoup
Element
个对象的列表
我多次循环并从列表中创建了几个新的 Element
对象。
像这样:
public static Element mergeElements(List<Element> elements,int startFrom) {
Element mergedElement = new Element("div");
for (int i = startFrom; i < elements.size(); i++) {
elements.get(i).appendTo(mergedElement);
}
return mergedElement
}
可以使用相同的 List
对象的 element
多次调用上述方法。
我观察到返回的 mergedElement
对象在调用 mergeElements()
后被修改。
一个简化的例子。
Element firstMergedElement = mergeElements(elements,0);
System.out.println(firstMergedElement);
Element secondMergedElement = mergeElements(elements,1);
// The object has been changed.
System.out.println(firstMergedElement);
这可能吗?
为什么appendTo
会改变this
?
解决方法
方法 appendTo
将元素附加到一个新的父元素。一个元素不能同时有两个父元素,因此实际上元素将从 firstMergedElement
移动到 secondMergedElement
。
如果您想将它们也保留在 firstMergedElement
中,您可以克隆它们中的每一个:
elements.get(i).clone().appendTo(mergedElement);
编辑:
显示您的代码正在做什么的附加说明:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。