谁能看到我在哪里错了?代码应该打开一个xml文档,然后根据每个节点的内容,用每个节点/属性的innertext填充ListView的列。 List视图应如下所示:
Item1 Item2 Item3
Item4 Item5 Item6
Item7 Item8 Item9
然而它的结局如下:
Item7 Item2 Item5
Item4
Item1
产生此错误的代码如下:
private void openPasswordFileToolStripMenuItem_Click(object sender, EventArgs e)
{
System.Xml.XmlDocument loadDoc = new System.Xml.XmlDocument();
loadDoc.Load(Application.StartupPath + "\\database.xml");
foreach (System.Xml.XmlNode descNode in loadDoc.SelectNodes("/Database/Account"))
{
lvItem = listView1.Items.Insert(index, descNode.Attributes["Description"].InnerText); ;
}
foreach (System.Xml.XmlNode userNode in loadDoc.SelectNodes("/Database/Account"))
{
lvItem.SubItems.Add(new ListViewItem.ListViewSubItem(lvItem, userNode.Attributes["Username"].InnerText)); ;
}
foreach (System.Xml.XmlNode passNode in loadDoc.SelectNodes("/Database/Account"))
{
lvItem.SubItems.Add(new ListViewItem.ListViewSubItem(lvItem, passNode.Attributes["Password"].InnerText)); ;
}
foreach(System.Xml.XmlNode node in loadDoc)
{
index += 1;
}
}
答案 0 :(得分:4)
不确定xml doc的结构,但是你的foreach代码是错误的。 如果您尝试为每个父项添加子项,则
foreach (System.Xml.XmlNode descNode in loadDoc.SelectNodes("/Database/Account"))
{
lvItem = listView1.Items.Insert(index, descNode.Attributes["Description"].InnerText); ;
lvItem.SubItems.Add(new ListViewItem.ListViewSubItem(lvItem, userNode.Attributes["Username"].InnerText)); ;
lvItem.SubItems.Add(new ListViewItem.ListViewSubItem(lvItem, passNode.Attributes["Password"].InnerText)); ;
}