从DOM对象创建的ArrayList中删除属性,也会从原始Document中删除它们。我究竟做错了什么

时间:2014-12-19 05:37:34

标签: java list dom arraylist

我有一个dom对象,如:

<Order OrderNo="123">
<Lines>
<Line LineNo="1">
<Details Quantity="1.0" Code="Apple"/>
</Line>
<Line LineNo="2">
<Details Quantity="1.0" Code="Orange"/>
</Line>
</Lines>
</Order>

我遍历行并在列表中的每一行,如

List<Element> listOfRelatedLines = new ArrayList<Element>();
listOfRelatedLines .add(elOrderLine);

现在我遍历列表并从列表中取出每一行。

for(Element elComponentLine : listOfRelatedComponentLines){

elComponentLine.removeAttribute("Code");

}

这也会从原始Document中删除属性Code。我在哪里错了?我应该怎么做才能保留原始文档中的值。

1 个答案:

答案 0 :(得分:1)

将元素放入新数组不会克隆该元素。因此,对该元素的任何更改仍将影响原始元素。您必须在元素上调用cloneNode才能克隆它。在添加到数组时执行此操作:

listOfRelatedLines.add((Element) elOrderLine.cloneNode(true));