• C#生成XML的三种途径


    为了全面,这里都将XML保存到文件中,有三种生成XML的方式:
    1。我认为是最原始,最基本的一种:利用XmlDocument向一个XML文件里写节点,然后再利用XmlDocument保存文件。
        首先加载要写入的XML文件,但是如果没有的,就要新建,在新建的过程中,要有写入的代码;   

                XmlDocument doc = new XmlDocument();
                try
                {
                    doc.Load("new.xml");
                }
                catch
                {
                    XmlTextWriter xtw = new XmlTextWriter("new.xml", Encoding.UTF8);   新建XML文件
                    xtw.WriteStartDocument();
                        xtw.WriteStartElement("gnode");                  gnode根节点
                              xtw.WriteStartElement("myxm1");                 gnode根节点下的元素myxmls
                              xtw.WriteEndElement();
                        xtw.WriteEndElement();
                    xtw.WriteEndDocument();
                    xtw.Close();
                    doc.Load("new.xml");               
                }           
               
                XmlNode xn = doc.DocumentElement;                   找到根节点
                XmlElement xe = doc.CreateElement("myxml2");             在根节点下创建元素,如果是属性,则用XmlAttribute
                xe.InnerText = "hahaha";                                             给子节点写入文本节点(值)
                xn.AppendChild(xe);                                            根节点将其纳入
                doc.Save("new2.xml");                          利用XmlDocument保存文件

    注意点:在新建根节点的时候,WriteStartElement,只能嵌套,也就是只能有一个根节点。

    2。应用到数据库,将数据库的DataSet对象里的值来生成XML文件的元素;

        using (SqlConnection con = new SqlConnection("Server=.;DataBase=HGSTUDY;uid=sa;pwd=yao"))
                {
                    con.Open();
                    SqlCommand command = new SqlCommand("select * from GL_STUDY", con);
                    command.CommandType = CommandType.Text;
                    DataSet ds = new DataSet("DATASET");          DATASET将成为XML文件中的根节点名称,否则系统将其命名为NewDataSet
                    SqlDataAdapter sda = new SqlDataAdapter();
                    sda.SelectCommand = command;
                    sda.Fill(ds, "DATATABLE");                         DATATABLE为所生成XML文件中的子节点名称,否则系统将其命名为Table。
                    ds.WriteXml("dbxml.xml");               DataSet的方法WriteXml将数据写入到XML文件,就是这么一句话。如果不保存到文件,直接ds.GetXML()
                }

    3。利用XmlSerializer来将类的属性值转换为XML文件的元素值。用一个字符串作为一个XML文档中的xmlAttribute或xmlElement。[其元素或属性由类的定义来设置(xml串行化)]

    using System;System.xml.Serialization;

    3.1.先初始化一个类,设置属性值

    [XmlRoot("Truck")] ----设置作为XML中的根元素名称
        public Truck()
            { }       
            [XmlAttribute("id")] --------设置作为xml中的属性
            public int ID
            {
                get{return this._id;}
                set { this._id = value; }
            }
            [XmlElement("chepai")]------设置作为XML中的元素(默认状态)
            public string cheID
            {
                get { return this._cheID; }
                set { this._cheID = value; }
            }
            private int _id = 0;
            private string _cheID = "";
       

    3.2.创建XmlSerializer实例

    class XXX
    {
          XmlSerializer ser = new XmlSerializer(Type.GetType("forxml.truck"));
                Truck tr = new Truck();
                tr.ID = 1;
                tr.cheID = "赣A T34923";

    3.3.Serialize方法--完成对类的串行化
                XmlTextWriter xtw = new XmlTextWriter("myxml.xml",Encoding.UTF8);          用XmlTextWriter 创建一个XML文件
                ser.Serialize(xtw, tr);                如果只想显示,可以直接ser.Serialize(Console.Out, tr); 

    }

    个人总结,这里只叙述了三种方法,灵活应用后会很好,直接输入,或通过数据库或类都可以。可以用来在C#中对XML的生成。

  • 相关阅读:
    洛谷3163 CQOI2014危桥 (最大流)
    UVA557 汉堡 Burger
    洛谷1950 长方形 (单调栈)
    洛谷3317 SDOI2014重建(高斯消元+期望)
    洛谷4035 JSOI2008球形空间产生器 (列柿子+高斯消元)
    test1
    test
    background
    bzoj1075
    bzoj1074
  • 原文地址:https://www.cnblogs.com/winvay/p/1321400.html
Copyright © 2020-2023  润新知