<company> <employee>
<age> 12 </age>
<name> name1</name>
</employee>
<employee>
<age> 12 </age>
<name> name1</name>
<status>active</status>
</employee>
<employee>
<age> 12 </age>
<name> name1</name>
</employee></company>
Java代码:
employeeList nList = doc.getElementsByTagName("employee");
for (int i = 0; i < nList.getLength(); i++) {
Node employeeNode= nList.item(i);
employeeList employeeList = nNode.getChildNodes();
Node insertNode=null;
System.out.println(" Processing the " + i + " Portlet Tag");
//Inner Loop to Process each Portlet tags
int employeeList_Count=employeeList.getLength();
for (int j = 0; j < employeeList_Count; j++) {
Node childNode = employeeList.item(j);
if( childNode.getNodeName()) == "status") {
removeNode(nNode,childNode); // assume remove functionality perfectly works (actually it is!!)
}
if ( j == employeeList_Count - 2) // goes into loop during last node
{
Element insertElement = (Element)nNode;
insertElement.insertBefore(employee_status_element, insertElement.getFirstChild().getNextSibling()); //employee_status_element, this is the element should be inserted in all employee tags
doc.getDocumentElement().normalize();
updateXml2File(doc, xmlDTDPath , outputFile); // functionality to write the xml into file
}
}
}
每次运行此代码时,只有最后一名员工(满分3分)才会更新元素&#34; status&#34; ......
这是输出就像
第一个循环完成 tag位于第一个employee标签中..它在第二个循环中推到第二个。最后,只有最后一个元素具有status元素。
真的很痛苦......非常感谢你的指导。答案 0 :(得分:0)
我已经解决了这个问题。这是愚蠢的,但是在将代码加工几个小时之后就被吓坏了。
逻辑之前是这样的
Create Element
Loop for Multiple Employees
Attach/Append the Element to Employees
问题:元素仅附加到循环中的最后一个雇员节点。
原因:由于我在循环之前只创建了一个元素..我无法将它附加到多个员工节点
解决方案:
现在我将元素创建移动到循环中然后它开始工作。
Loop for Multiple Employees
Create Element
Attach/Append the Element to Employees
我的问题和代码有点乱,我试图尽可能地纠正它,使其简单但不能......感谢每一个试图解决这个问题的人。