我正在做一个比较两个Xml文档并比较名称标签以查找重复数据的程序。当我发现我添加了一个arraylist。但它增加了两次。我搜索了一些错误,但我无法看到。有代码:
public void verificaChave(){
NodeList v1 = this.doc1.getElementsByTagName("name");
NodeList v2 = this.doc1.getElementsByTagName("name");
for(int i= 0; i<v1.getLength();i++)
{
found = false;
for(int j = 0; j<v2.getLength();j++)
{
if(v1.item(i).getTextContent().equalsIgnoreCase(v2.item(j).getTextContent()))
{
if(!found)
{
found = true;
}
else
{
repetiu.add(v1.item(i).getTextContent());
}
}
}
}
this.saveRepeat();
}
答案 0 :(得分:0)
这里的问题似乎是你实例化了两个完全相同的NodeLists - v1和v2 - 然后使用for循环迭代v1和一个单独的嵌套for循环迭代v2。 v1完全没有理由存在,即使你并不是指两个NodeLists都指向同一个文档,我也无法想象你想要嵌套迭代的情况,就像你在这里做的那样。
此外,你找到了一个布尔标志,但你根本就没有实际使用过这个值 - 你是不是想把它作为一个哨兵价值?另一点 - 如果你永远不会将它设置为假,那么检查是否发现== false并不是真的有意义。如果v1.item(i).getTextContent()。equalsIgnoreCase(v2.item(j).getTextContent())),那么设置为true就不那么容易混淆和冗长。