Xml 节点foreach循环

Xml node foreach loop

我目前正在尝试读取 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 个按钮。 我需要改变什么?我的代码有什么问题?

您阅读 xml 的代码是正确的,但您将每个按钮一个接一个地放在一起。为每个 Button.

设置 .Location 属性

你的代码工作完美,但问题是按钮放在同一个地方。你需要改变位置。

试试这个

       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;
            }