我try 按如下方式循环遍历XML文档:
<proposer driverId="1">
<conviction convictionId="1">
<code>16</code>
</conviction>
<conviction convictionId="2">
<code>10</code>
</conviction>
</proposer>
<driver driverId="2">
<conviction convictionId="3">
<code>22</code>
</conviction>
</driver>
我的 idea 是把所有的信念代码,无论它是提议者还是驱动器,并将其存储在字符串列表中,然后通过发送一个索引,我执行ElementAtOrDefault
来获得代码.
DrivingConvictionCode1 = GetConvictionCode(1, risk);
DrivingConvictionCode2 = GetConvictionCode(2, risk);
DrivingConvictionCode3 = GetConvictionCode(3, risk);
在这里,在GetConvictionCode
方法中,我传递了Index
个值和XHTML,后者调用GetConvictions
方法,然后执行ElementAtOrDefault
,得到基于索引的ConvictionCode
.
private string GetConvictionCode(int convictionSrNo, XmlDocument risk)
{
var convictions = GetConvictions(risk);
return convictions.ElementAtOrDefault(convictionSrNo - 1) == null ? string.Empty : convictions[convictionSrNo - 1];
}
private List<string> GetConvictions(XmlDocument risk)
{
var convictions = new List<string>();
foreach (XmlNode selectNode in risk.SelectNodes("/risk/proposer/conviction"))
{
convictions.AddRange(new[] {selectNode.SelectSingleNode("/risk/proposer/conviction/code").InnerText});
}
foreach (XmlNode selectNode in risk.SelectNodes("/risk/driver/conviction"))
{
convictions.AddRange(new[] {selectNode.SelectSingleNode("/risk/driver/conviction/code").InnerText});
}
return convictions;
}
我在这里面临的问题是在循环中,下一个信念值正在被旧的那个取代.第一个循环中的值是16,下一个值应该是10,但它是16.有谁能帮我一把,或者告诉我其他的方法吗?
我期望的输出是:
DrivingConvictionCode1 = GetConvictionCode(1, risk); // 16
DrivingConvictionCode2 = GetConvictionCode(2, risk); // 10
DrivingConvictionCode3 = GetConvictionCode(3, risk); // 22