我正在尝试解析XML文档。我正确地返回了所有结果,但是当我在嵌入式for循环中解析它们时,事情并没有完全正确。
我想要的是什么:
Var #1
Var #2
我得到了什么:
Var #1
Var #2
Var #1
Var #2
我有一个初始for循环来遍历主文档并第一次获取所有变量,然后我有第二个for循环,它遍历文档的子元素。如上所述,for循环内的for循环返回所有正确的结果,但打印两次。
NodeList nodes = doc.getElementsByTagName("update");
for (int i=0; i < nodes.getLength(); i++)
{
Node node = nodes.item(i);
if (node.getNodeType() == Node.ELEMENT_NODE)
{
if (update_type.equals("JGRP"))
{
String user = getValue("first-name", element) + " " + getValue("last-name", element);
NodeList cNodes = doc.getElementsByTagName("member-group");
for (int z=0; z < cNodes.getLength(); z++)
{
Node cNode = cNodes.item(z);
if (cNode.getNodeType() == Node.ELEMENT_NODE)
{
Element cElement = (Element)cNode;
String group_name = getValue("name",cElement);
g_name = group_name;
System.out.println(g_name);
}
}
}
}
}
任何建议都将不胜感激。
答案 0 :(得分:2)
我终于明白了。
// This loop runs twice total
for (int i=0; i < nodes.getLength(); i++)
{
...
if (node.getNodeType() == Node.ELEMENT_NODE)
{
...
if (update_type.equals("JGRP"))
{
...
// This loop runs twice total
for (int z=0; z < cNodes.getLength(); z++)
{
...
if (cNode.getNodeType() == Node.ELEMENT_NODE)
{
...
System.out.println(g_name);
}
}
}
}
}
如果您的外循环运行两次,则内循环运行的总次数为4次。因此它会打印4个元素,每个元素两次。