【问题标题】:How to create, read and write XML C# windows forms?如何创建、读取和写入 XML C# windows 窗体?
【发布时间】:2010-04-25 17:42:13
【问题描述】:

我想通过c#创建一个XML文件,需要对其进行读写。

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

【问题讨论】:

  • 曾经尝试过已经发布的关于 XML 的问题?还是谷歌?

标签: c# xml winforms


【解决方案1】:

大约三个选项(我假设至少 .NET 3.5):

  1. @Andrew 的设置
  2. 内置的序列化工具可以为您解决一些繁重的工作。
  3. 使用 Linq to XML(XDocument、XElement、XAttribute 等),这使得手动读取和写入所需格式的 XML 变得相对简单。

说实话,您可能会使用 Linq to XML 最快地实现您想要的结果,它也可能是最灵活的方法,但是您应该考虑什么是最适合您的特定应用程序的解决方案 - 例如如果您保存的值应用程序设置,那么使用配置/设置可能更合适。

【讨论】:

    【解决方案2】:
        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;
                }
    
            }
        }
    

    【讨论】:

      【解决方案3】:

      请看Using Settings in C#:

      .NET Framework 2.0 允许您 创建和访问的值 在应用程序之间持续存在 执行会话。这些值是 称为设置。设置可以 代表用户偏好,或 有价值的信息申请 需要使用。例如,您可能 创建一系列设置来存储 用户对配色方案的偏好 的应用程序。或者你可以存储 指定一个连接字符串 您的应用程序使用的数据库。 设置允许你同时坚持 对其至关重要的信息 代码之外的应用程序,以及 创建存储文件的配置文件 个人用户的偏好。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-19
        • 1970-01-01
        相关资源
        最近更新 更多