C#:为什么填充此listView的代码出现了问题?

C#:为什么填充此listView的代码出现了问题?,c#,xml,listview,C#,Xml,Listview,有人能看出我哪里出了问题吗?代码应该打开一个xml文档,然后根据每个节点的内容,用每个节点/属性的innertext填充ListView的列。列表视图应如下所示: Item1 Item2 Item3 Item4 Item5 Item6 Item7 Item8 Item9 Item7 Item2 Item5 Item4 Item1 但结果是这样的: Item1 Item2 Item3 Item4 Item5 Item6 Item7 Item8 I

有人能看出我哪里出了问题吗?代码应该打开一个xml文档,然后根据每个节点的内容,用每个节点/属性的innertext填充ListView的列。列表视图应如下所示:

Item1   Item2   Item3
Item4   Item5   Item6
Item7   Item8   Item9
Item7 Item2 Item5
Item4
Item1
但结果是这样的:

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;
        }
    }

不确定xml文档的结构,但您的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)); ;
    }

不确定xml文档的结构,但您的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)); ;
    }