xml节点foreach循环

Posted

技术标签:

【中文标题】xml节点foreach循环【英文标题】:Xml node foreach loop 【发布时间】:2016-06-14 12:34:58 【问题描述】:

我目前正在尝试读取一个 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 中列出的每个模块添加一个控件到面板。

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 个按钮。 我必须改变什么?我的代码有什么问题?

【问题讨论】:

【参考方案1】:

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

【讨论】:

如果你不休息就会发生这种情况,上帝我恨我自己.. :D 谢谢,这就是问题所在。【参考方案2】:

您的代码运行良好,但问题是按钮放置在同一个位置。你需要改变位置。

试试这个

       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;
            

【讨论】:

以上是关于xml节点foreach循环的主要内容,如果未能解决你的问题,请参考以下文章

XSLT1,Muenchian 分组,在 foreach 循环中列出分组节点

在 foreach 循环中解析 XML

嵌套 foreach 循环读取 .xml 并将对象写入列表

xml Foreach循环

ForEach 循环中的异步/等待节点 Postgres 查询

完成foreach循环后如何在节点js中返回推送的数组响应?