Xml节点foreach循环

时间:2016-06-14 12:34:59

标签: c# foreach xmlnode

我目前正在尝试读取xml文件并为每个“Mods”条目添加一个控件。

<Modlist>
  <Mods>
    <Mod>Test1</Mod>
    <Version>1.0</Version>
  </Mods>
  <Mods>
    <Mod>Test2</Mod>
    <Version>2.0</Version>
  </Mods>
  <Mods>
    <Mod>Test3</Mod>
    <Version>3.0</Version>
  </Mods>
</Modlist>

基本上我想为xml中每个列出的mod添加一个控件到面板。

XDocument Mods = XDocument.Load(@"C:\dataset.xml");

foreach (var mod in Mods.Descendants("Mods"))
{
    Button modbutton = new Button();

    modbutton.Text = mod.Element("Mod").Value;

    panel1.Controls.Add(modbutton);
}

它的工作,但它只创建一个按钮,似乎停止。 在我的例子中,它应该创建3个按钮。 我需要改变什么?我的代码怎么了?

2 个答案:

答案 0 :(得分:1)

您读取xml的代码是正确的,但您将每个按钮放在另一个上面。为每.Location设置Button属性。

答案 1 :(得分:1)

你的代码工作得很好,但问题是按钮放在同一个地方。你需要改变立场。

试试这个

       XDocument Mods = XDocument.Load(@"C:\dataset.xml");

            int I = 10;
            foreach (var mod in Mods.Descendants("Mods"))
            {
                Button modbutton = new Button() { Top = 10 + I, Left = 10  };


                modbutton.Text = mod.Element("Mod").Value;

                panel1.Controls.Add(modbutton);

                I += 50;
            }