簡體   English   中英

C#將XML讀取到ListView

[英]c# reading xml to listview

編寫XML代碼

XmlTextWriter xmlchat = new XmlTextWriter("chatroomdoc.xml", UTF8Encoding.UTF8);
        xmlchat.WriteStartDocument();
        xmlchat.Formatting = Formatting.Indented;
        xmlchat.WriteStartElement("Chat");
        foreach (ListViewItem one in lvmess.Items)
        {
            xmlchat.WriteStartElement("Client", one.SubItems[0].Text);
            xmlchat.WriteElementString("Nickname", one.SubItems[0].Text);
            xmlchat.WriteElementString("Message",one.SubItems[1].Text);
            xmlchat.WriteEndElement();
        }
        xmlchat.WriteEndElement();

        xmlchat.WriteEndDocument();
        xmlchat.Close();

該代碼是我的客戶端聊天應用程序的一部分,它將文本消息保存到xml文件中。 我需要編寫一個代碼,在打開client時將xml文件加載到listview中。顯然)有人可以幫助我嗎?

這是讀取文件代碼

    private void Form1_Load(object sender, EventArgs e){

        ListViewItem lis = new ListViewItem();
        using (XmlReader reader = XmlReader.Create("chatroomdoc.xml"))
        {
            int i =0;

            while (reader.Read())
            {

                    switch (reader.Name.ToString())
                    {
                        case "Nickname":
                            lis.Text=reader.ReadElementContentAsString();
                        break;
                        case "Message":
                            lis.SubItems.Add(reader.ReadElementContentAsString());

                        break;
                    }
                //lvmess.Items.Add(lis);
                //i++;

            }

            lvmess.Items.Add(lis);
        }
    }

您已經在while循環之外創建了ListViewItem,並且在每次迭代后,您只更改了同一ListViewItem上的數據。 您應該在每次迭代時創建一個新項目,並將其添加到列表中,以便以后使用。 像這樣:

private void Form1_Load(object sender, EventArgs e){

    //ListViewItem lis = new ListViewItem();
    using (XmlReader reader = XmlReader.Create("chatroomdoc.xml"))
    {
        int i =0;

        while (reader.Read())
        {
                ListViewItem lis = new ListViewItem();
                switch (reader.Name.ToString())
                {
                    case "Nickname":
                        lis.Text=reader.ReadElementContentAsString();
                    break;
                    case "Message":
                        lis.SubItems.Add(reader.ReadElementContentAsString());

                    break;
                }
                lvmess.Items.Add(lis);
            //i++;

        }

       // lvmess.Items.Add(lis);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM