【问题标题】:C# populate combobox with XML data based on another comboboxC# 使用基于另一个组合框的 XML 数据填充组合框
【发布时间】:2018-02-14 01:13:31
【问题描述】:

这里的 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,然后用 XML 文件的 &lt;Test 1&gt; 部分中的值填充第二个 ComboBox(我们称之为 codeCBO),理想情况下codeCBO 中的每个项目的结构类似于Code-Description。我在网上查看并看到有很多 XML 教程,但我没有看到任何像我正在尝试做的事情。任何帮助/建议将不胜感激。

由于某种原因,Error_codes 结束标记没有显示在这里,但它在我正在使用的 XML 文件中

【问题讨论】:

  • 这甚至不是有效的 XML。如果这实际上是您正在使用的格式而不是复制/粘贴错误,那么您将找不到 XML API 来帮助您获取数据。
  • 我刚刚注意到我没有在空格中包含“_”字符,并且我忘记了最后的“”。除此之外,您还引用了哪些“无效 XML”? Visual Studio 在包含我忘记的内容的 XML 文件中没有发现错误
  • 啊,我确实看到了复制错误。我将用我真正拥有的内容修改最上面的帖子(必须重写以不包括对工作敏感的内容)

标签: c# xml


【解决方案1】:

在搞砸了 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);
                }
            }

        }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-29
    • 2012-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-27
    相关资源
    最近更新 更多