为了全⾯,这⾥都将XML保存到⽂件中,有三种⽣成XML的⽅式:
1.最原始,最基本的⼀种:利⽤XmlDocument向⼀个XML⽂件⾥写节点,然后再利⽤XmlDocument保存⽂件。
⾸先加载要写⼊的XML⽂件,但是如果没有的,就要新建,在新建的过程中,要有写⼊的代码;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| XmlDocument doc = new XmlDocument(); try { doc.Load("new.xml"); } catch { XmlTextWriter xtw = new XmlTextWriter("new.xml", Encoding.UTF8); xtw.WriteStartDocument(); xtw.WriteStartElement("gnode"); xtw.WriteStartElement("myxm1"); xtw.WriteEndElement(); xtw.WriteEndElement(); xtw.WriteEndDocument(); xtw.Close(); doc.Load("new.xml"); } XmlNode xn = doc.DocumentElement; XmlElement xe = doc.CreateElement("myxml2"); xe.InnerText = "hahaha"; xn.AppendChild(xe); doc.Save("new2.xml");
|
注意点:在新建根节点的时候,WriteStartElement,只能嵌套,也就是只能有⼀个根节点。
2.应⽤到数据库,将数据库的DataSet对象⾥的值来⽣成XML⽂件的元素;
1 2 3 4 5 6 7 8 9 10 11 12
| 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"); SqlDataAdapter sda = new SqlDataAdapter(); sda.SelectCommand = command; sda.Fill(ds, "DATATABLE"); ds.WriteXml("dbxml.xml"); }
|
3.利⽤XmlSerializer来将类的属性值转换为XML⽂件的元素值。⽤⼀个字符串作为⼀个XML⽂档中的xmlAttribute或xmlElement。[其元素或属性由类的定义来设置(xml串⾏化)]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| using System;System.xml.Serialization;
[XmlRoot("Truck")] public Truck() { } [XmlAttribute("id")] public int ID { get{return this._id;} set { this._id = value; } } [XmlElement("chepai")] public string cheID { get { return this._cheID; } set { this._cheID = value; } }
private int _id = 0; private string _cheID = "";
class XXX { XmlSerializer ser = new XmlSerializer(Type.GetType("forxml.truck")); Truck tr = new Truck(); tr.ID = 1; tr.cheID = "赣A T34923"; XmlTextWriter xtw = new XmlTextWriter("myxml.xml",Encoding.UTF8); ser.Serialize(xtw, tr); }
|
这⾥只叙述了三种⽅法,灵活应⽤后会很好,直接输⼊,或通过数据库或类都可以。可以⽤来在C#中对XML的⽣成。
。