C#使用基于另一个组合框的XML数据填充组合框

时间:2018-02-14 01:13:32

标签: c# xml

关于XML的总体菜鸟,我有一个XML文件,其结构如下:

<Error_Codes>
   <Test_1>
     <Code>ABC</Code>
     <Description>Item #1</Description>
   </Test_1>
   <Test_1>
     <Code>DEF</Code>
     <Description>Item #2</Description>
   </Test_1>
   <Test_2>
     <Code>UVW</Code>
     <Description>Item #3</Description>
   </Test_2>
   <Test_2>
     <Code>XYZ</Code>
     <Description>Item #4</Description>
   </Test_2>

我想要做的是让用户从之前的ComboBox中选择Test 1或Test 2,然后使用<Test 1>部分中的值填充第二个ComboBox(让我们称之为codeCBO) XML文件,理想情况下,codeCBO中的每个项目都像Code-Description一样。我在网上查看了很多XML教程,但我没有看到类似于我想要做的事情。任何帮助/建议将不胜感激。

出于某种原因,Error_codes结束标记未显示在此处,但它位于我正在使用

的XML文件中

1 个答案:

答案 0 :(得分:0)

在弄乱了3天之后,我终于找到了对我有用的解决方案。 XML文件现在看起来像这样:

<Error_Codes>
   <Test1 code="0001" description="test ABC"/>
   <Test1 code="0002" description="test DEF"/>
   <Test2 code="9999" description="test UVW"/>
   <Test2 code="8888" description="test XYZ"/>
</Error_Codes>

然后,我的C#代码如下所示:

 private void stationCBO_SelectedIndexChanged(object sender, EventArgs e)
 {
     codeCBO.Items.Clear();
     LoadXML(stationCBO.Text);
 }

private void LoadXML(string station)
    {
        XmlReader reader = XmlReader.Create("Failure_Modes.xml");

        while (reader.Read())
        {
            if ((reader.NodeType == XmlNodeType.Element) && (reader.Name == station))
            {
                if (reader.HasAttributes)
                {
                    string text = reader.GetAttribute("code") + "-" + reader.GetAttribute("description");
                    codeCBO.Items.Add(text);
                }
            }

        }
    }