所以我一直致力于一个项目,但我遇到了麻烦。我需要从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文件示例。
如果有人可以帮助让员工姓名正确显示,或指出我出错的地方,我们将非常感激。
答案 0 :(得分:1)
名称是元素中的独立文本节点,而不是阅读.Value
if (nodeFirstName.InnerText != "" && nodeLastName.InnerText != "")
如果有多个元素,您需要添加到循环中的列表中,否则您将始终以最后一个元素结束。
您可能希望将所有XML填充到一个文件中。
答案 1 :(得分:0)
如果你想要一些完全自动化的东西,并且只是没有繁重的逻辑,我建议使用xmlSerialiser。转到link获取更多信息。