【发布时间】:2016-06-01 16:02:45
【问题描述】:
晚上好, 我有一个这样的 XML 模板:
<Pedestrian Name='Kid'>
<Initial_Position In_X='2' In_Y='2' />
<Final_Position Fin_X='3' Fin_Y='3' Time='10' />
<Final_Position Fin_X='4' Fin_Y='4' Time='12' />
</Pedestrian>
<Pedestrian Name='Mother'>
<Initial_Position In_X='3' In_Y='3' />
<Final_Position Fin_X='3' Fin_Y='3' Time='10' />
</Pedestrian>
其中“Final_Position”出现在随机数的时间。
我对代码的想法如下:
foreach (XElement pedestrian in doc.Root.Elements("Pedestrian"))
{
XElement initialPosition = pedestrian.Element("Initial_Position");
name = (string)pedestrian.Attribute("Name");
X1 = (int)initialPosition.Attribute("In_X");
Y1 = (int)initialPosition.Attribute("In_Y");
MessageBox.Show(name);
int i = 0;
int x = doc.Root.Elements("Pedestrian").Elements("Final_Position").Count();// nodeList.Count();
MessageBox.Show("x = " +x.ToString());
int[] X_fin = new int[x];
int[] Y_fin = new int[x];
int[] Time_fin = new int[x];
foreach (XElement finpos in doc.Root.Elements("Pedestrian").Elements("Final_Position"))
{
X_fin[i] = (int)finpos.Attribute("Fin_X");
Y_fin[i] = (int)finpos.Attribute("Fin_Y");
Time_fin[i] = (int)finpos.Attribute("Time");
i++;
}
}
为了能够在最后创建一个对象数组Pedestrian,其中包含名称、Initial_Position(X1,Y1) 和 Final_Position(X_Fin,Y_Fin,Time_Fin)。
问题是,如果我放一些 MessageBox.Show() 以了解程序是如何工作的,那么输出是这样的:
Kid
2 2
3 3 10 //
4 4 12 //
3 3 10 //final position of Kid + Mother
Mother
3 3
3 3 10 //
4 4 12 //
3 3 10 //
此外,数组 X_Fin 的大小为 3(我的文件中所有 Final_Position 的总和)。
我怎样才能更正它以便在 X_Fin 中拥有给定行人的所有位置?我的想法是在第二个 foreach
之后创建对象【问题讨论】:
标签: c# xml visual-studio