zoukankan      html  css  js  c++  java
  • (转)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的生成。

  • 相关阅读:
    hlgoj 1766 Cubing
    Reverse Linked List
    String to Integer
    Bitwise AND of Numbers Range
    Best Time to Buy and Sell Stock III
    First Missing Positive
    Permutation Sequence
    Next Permutation
    Gray Code
    Number of Islands
  • 原文地址:https://www.cnblogs.com/wangyt223/p/3006732.html
Copyright © 2011-2022 走看看