<level levelid="1">
<chapter>1<chapter>
<mintime>100</mintime>
<maxtime>18000</maxtime>
<totalhexes>7</total>
<target>
<targettype>2</targettype>
<targetrestraint>0</targetrestraint>
<targetcondition>2</targetcondition>
<targetvalue>1980</targetvalue>
</target>
<target>
<targettype>1</targettype>
<targetrestraint>0</targetrestraint>
<targetcondition>0</targetcondition>
<targetvalue>3000</targetvalue>
</target>
...
尝试阅读不同的目标时。 知道它们是3个目标,我尝试使用以下代码循环遍历它们:
for (int i = 1; i <= 3; i++) {
XmlReader.Element star = elements
.getChildByName("target");
type = star.getInt("ns1:targettype");
restraint = star.getInt("targetrestraint");
condition = star.getInt("targetcondition");
value = star.getInt("targetvalue");
target.setTargetstar(i, type, restraint, condition, value);
}
但我总是得到第一个目标的值,如果我将星形设置为以下任何一个并不重要:
XmlReader.Element star = elements.getChildByName("target");
或
XmlReader.Element star = elements.getChildByNameRecursive("target");
我用什么方法来阅读所有三个“目标”孩子?
答案 0 :(得分:1)
for (XmlReader.Element target : elements.getChildrenByName("target")) {
// this should be iterated three times, once for each target
}
答案 1 :(得分:1)
您总是使用getChildByName
来接收第一个孩子
相反,您应该使用getChildrenByName
,它会为您提供具有此名称的所有孩子。
您可以轻松地使用foreach
循环来循环使用它们:
for(XmlReader.Element target : elements.getChildrenByName("target")) {
type = target.getInt("targettype");
restraint = element.getInt("targetrestraint");
// Rest of code here
}