2

我有这个 XML。

 <employees>
  <employee tag="FT" name="a">
     <password tag="1"/>
     <password tag="2"/>
</employee>
<employee tag="PT" name="b">
     <password tag="3"/>
     <password tag="4"/>
</employee>
</employees>

我正在尝试获取每个员工的子节点并将子节点的标记值(即密码的标记值)放入列表中。

nl = doc.getElementsByTagName("employee");

for(int i=0;i<nl.getLength();i++){
 NamedNodeMap nnm = nl.item(i).getAttributes(); 
 NodeList children = nl.item(i).getChildNodes();
 passwordList = new ArrayList<String>();
 for(int j=0; j<children.getLength();j++){
   NamedNodeMap n = children.item(j).getAttributes();
   passwordTagAttr=(Attr) n.getNamedItem("tag");
   passwordTag=stopTagAttr.getValue();  
   passwordList.add(passwordTag);                   
   }
}

当我调试时,我得到了 children = 4 的值。但我应该为每个循环得到 2 个请帮助。

4

1 回答 1

11

NodeList返回的包含getChildNodes()Element节点(在这种情况下这是您关心的)以及Node自身的属性子节点(您不关心)。

for(int j=0; j<children.getLength();j++) {
   if (children.item(j) instanceof Element == false)
       continue;

   NamedNodeMap n = children.item(j).getAttributes();
   passwordTagAttr=(Attr) n.getNamedItem("tag");
   passwordTag=stopTagAttr.getValue();  
   passwordList.add(passwordTag);                   
}
于 2012-07-10T03:26:00.873 回答