首页 > 解决方案 > 将数据从 XML 添加到组合框的 C# 问题

问题描述

我对 XML 文件相当陌生,我正在尝试从 XML 读取并从 XML 输入一些值并将它们存储在 Combobox 中。我查看了许多示例,但没有找到足够接近的示例来解决这个问题。我已经从 XML 文件中读取数据并将数据输入到 Combobox 中,但由于某种原因,所有内容都被添加到一行中。

这是 XML 文件的样子。

    <menus>
      <addMaterialForm>
        <filamentType>
          <Type>ABS</Type>
          <Type>PETG</Type>
          <Type>PLA</Type>    
        </filamentType>
      </addMaterialForm>
    </menus>

这是我的 C# 代码:

        private void searchButton_Click(object sender, EventArgs e)
        {
            XmlDocument doc = new XmlDocument();
            doc.Load(Globals.xmlFilePath);

            foreach (XmlNode node in doc.DocumentElement)
                {
                    foreach (XmlNode child in node.ChildNodes)
                    {
                        filamentBox.Items.Add(child.InnerText);
                    }
                }
          }

由于某种原因,所有内部文本都被添加在一起,这就是我得到的结果。 结果

我真的在这里摸不着头脑,任何帮助都将不胜感激。

谢谢!

标签: c#xmlcombobox

解决方案


好吧,您还没有使用 XPath 到达存在所需项目的正确父级(长丝类型)。因此,内部文本为您提供所有节点值。

使用 xpath,如:

//menus/addMaterialForm/filamentType 

到达正确的父 XmlNode。然后遍历所有孩子并添加到组合框。


推荐阅读