如何在C#的Windows窗体中创建、读取和写入XML?

3

我希望通过C#创建一个XML文件,并需要在其中读写。

我需要存储的数据只是字符串和整数。


尝试过查看关于XML的已发布的问题了吗?或者使用谷歌搜索? - Nayan
3个回答

3
大致有三种选择(我假设至少为.NET 3.5):
  1. 按照 @Andrew 的设置
  2. 内置的序列化工具非常方便,并且可以为您完成一些繁重的工作。
  3. 使用Linq to XML(XDocument、XElement、XAttribute等),它使得手动读写XML以及所需格式变得相当简单。
老实说,您可能会最快地使用Linq to XML来获得想要的结果,这也可能是最灵活的方法,但是您应该考虑什么是最适合您特定应用程序的解决方案——例如,如果您保存的值是应用程序设置,则使用配置/设置可能更合适。

1
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.IO;
    using System.Xml;
    using System.Data;

    namespace DomenNotification
    {
        class CreateXML
        {
            public static string Title = "";
            public static string Hosting = "";
            public static string Startdate = "";
            public static string ExpDate = "";
            public static string Username = "";
            public static string Password = "";

            public string Title1 { get; set; }
            public string Hosting1 { get; set; }
            public string Startdate1 { get; set; }
            public string ExpDate1 { get; set; }
            public string Username1 { get; set; }
            public string Password1 { get; set; }


            public string filePath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\Notification.xml"; // This is the path of MyDocuments folder of your pc

           //---------------create xml file -----------------------

            public bool isXmlExist(string filePath)
            {
                bool result = false;
                try
                {
                    if (File.Exists(filePath))// Checking the file if exist
                    {
                        Startdate = DateTime.Now.ToShortDateString();
                        result = true;
                    }
                    else
                    {
                        XmlDocument doc = new XmlDocument();
                        XmlElement element1 = doc.CreateElement("", "XML", "");
                        doc.AppendChild(element1);

                        //--------------creating the node elements

                        XmlElement element2 = doc.CreateElement("", "Title", "");
                        element1.AppendChild(element2);

                        XmlElement element3 = doc.CreateElement("", "Hosting", "");
                        element1.AppendChild(element3);

                        XmlElement element4 = doc.CreateElement("", "StartDate", "");
                        element1.AppendChild(element4);

                        XmlElement element5 = doc.CreateElement("", "ExpDate", "");
                        element1.AppendChild(element5);

                        XmlElement element6 = doc.CreateElement("", "Username", "");
                        element1.AppendChild(element6);

                        XmlElement element7 = doc.CreateElement("", "password", "");
                        element1.AppendChild(element7);

                        doc.Save(filePath);
                        Startdate = DateTime.Now.ToShortDateString();
                        //writeXml(filePath);

                        result = true;
                    }
                }
                catch { result = false; }
                return result;
            }

                //-------------------Getting the xml data from creating file ---                 
            public DataSet getXmlData(string filePath)
            {
                DataSet ds = new DataSet();
                try
                {
                    if (isXmlExist(filePath))
                    {
                        ds.Clear();
                        ds.ReadXml(filePath);
                        int table = Convert.ToInt32(ds.Tables.Count);
                        for (int i = 0; i <= table; i++)
                        {
                            Title = ds.Tables[i].Rows[0][0].ToString();
                            Hosting = ds.Tables[i].Rows[0][1].ToString();
                            Startdate = ds.Tables[i].Rows[0][2].ToString();
                            ExpDate = ds.Tables[i].Rows[0][3].ToString();
                            Username = ds.Tables[i].Rows[0][4].ToString();
                            Password = ds.Tables[i].Rows[0][5].ToString();
                        }
                        return ds;
                    }
                    return ds;
                }
                catch { return ds; }
            }

//------------------- insert the data into created xml file--------------

            public bool writeXml(string filePath,string title,string hosting,string sdate,string exdate,string username,string password)
            {
                bool result = false;
                Title = title;
                Hosting = hosting;
                Startdate = sdate;
                ExpDate = exdate;
                Username = username;
                Password = password;
                DataSet ds = new DataSet();
                DataTable dt = new DataTable();
                ds.Clear();
                ds.ReadXml(path);
                int i = 0;
                i = Convert.ToInt32(ds.Tables[0].Rows.Count) - 1;
                try
                {

                    dt.Columns.Add("Title");
                    dt.Columns.Add("Hosting");
                    dt.Columns.Add("StartDate");
                    dt.Columns.Add("ExpDate");
                    dt.Columns.Add("Username");
                    dt.Columns.Add("Password");


                    dt.Rows.Add(dt.NewRow());
                    dt.Rows[i]["Title"] = Title;
                    dt.Rows[i]["Hosting"] = Hosting;
                    dt.Rows[i]["Startdate"] = Startdate;
                    dt.Rows[i]["ExpDate"] = ExpDate;
                    dt.Rows[i]["Username"] = Username;
                    dt.Rows[i]["Password"] = Password;

                    ds.Tables.Add(dt);

                    ds.WriteXml(path);
                    result = true;
                }
                catch { }
                return result;
            }

        }
    }

1
请查看在C#中使用设置
.NET Framework 2.0允许您创建和访问在应用程序执行会话之间持久存在的值。这些值称为设置。设置可以表示用户首选项或应用程序需要使用的有价值信息。例如,您可以创建一系列设置,用于存储应用程序颜色方案的用户首选项。或者,您可以存储指定应用程序使用的数据库的连接字符串。设置允许您在代码之外持久保存对应用程序至关重要的信息,并创建存储各个用户首选项的配置文件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接