读取多个XML文件并在ListBox问题中显示数据

时间:2015-02-20 17:35:59

标签: c# xml listbox

所以我一直致力于一个项目,但我遇到了麻烦。我需要从XML文件中读取员工数据,然后在ListBox中显示该数据。

NB:" tempFullName"是在脚本开头分配的空字符串。它永远不会重置为null。

void NewDateItemLoad(object sender, EventArgs e)
    {

        string path = Application.StartupPath.ToString() + "\\Users";
        int fCount = Directory.GetFiles(path, "*.xml", SearchOption.AllDirectories).Length;
        for(int i = 0;i<fCount;i++)
        {
            String[] filePaths = Directory.GetFiles(Application.StartupPath + "\\Users\\");
            XmlDocument xmlFile =new XmlDocument();
            xmlFile.Load(filePaths[i]);

            foreach(XmlNode node in xmlFile.SelectNodes("//Account"))
            {
                XmlNode nodeFirstName = node.SelectSingleNode("FirstName");
                XmlNode nodeLastName = node.SelectSingleNode("LastName");

                if(nodeFirstName.Value != "" && nodeLastName.Value != ""){
                    tempFullName = nodeFirstName.Value + nodeLastName.Value;
                }

            }


            lstWorkers.Items.Add(tempFullName);
            lstWorkers.Items.Add("-------------------"); //Temporary Divide


        }
    }

每个员工都有自己的XML文件,因为我将程序设置为使用该格式,因为在我正确理解如何与XML文件交互之前,我发现它更容易。我使用类似的过程搜索登录详细信息,并且工作得非常好,遗憾的是名称不会显示在列表框中。

http://puu.sh/g5cjK/7132fe251f.png这是代码的结果。 http://puu.sh/g5cWQ/254ecb4041.png我正在使用的XML文件示例。

如果有人可以帮助让员工姓名正确显示,或指出我出错的地方,我们将非常感激。

2 个答案:

答案 0 :(得分:1)

名称是元素中的独立文本节点,而不是阅读.Value

if (nodeFirstName.InnerText != "" && nodeLastName.InnerText != "")

如果有多个元素,您需要添加到循环中的列表中,否则您将始终以最后一个元素结束。

您可能希望将所有XML填充到一个文件中。

答案 1 :(得分:0)

如果你想要一些完全自动化的东西,并且只是没有繁重的逻辑,我建议使用xmlSerialiser。转到link获取更多信息。