为了全⾯,这⾥都将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); //新建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⽂件的元素;

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"); //DATASET将成为XML⽂件中的根节点名称,否则系统将其命名为NewDataSet
SqlDataAdapter sda = new SqlDataAdapter();
sda.SelectCommand = command;
sda.Fill(ds, "DATATABLE"); //DATATABLE为所⽣成XML⽂件中的⼦节点名称,否则系统将其命名为Table。
ds.WriteXml("dbxml.xml");
//DataSet的⽅法WriteXml将数据写⼊到XML⽂件,就Xml("dbxml.xml");如果不保存到⽂件,直接ds.GetXML()
}

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")] //----设置作为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 = "";
// 创建XmlSerializer实例
class XXX
{ XmlSerializer ser = new XmlSerializer(Type.GetType("forxml.truck"));
Truck tr = new Truck();
tr.ID = 1;
tr.cheID = "赣A T34923";
// Serialize⽅法--完成对类的串⾏化
XmlTextWriter xtw = new XmlTextWriter("myxml.xml",Encoding.UTF8); //⽤XmlTextWriter 创建⼀个XML⽂件
ser.Serialize(xtw, tr); //如果只想显⽰,可以直接ser.Serialize(Console.Out, tr);
}

这⾥只叙述了三种⽅法,灵活应⽤后会很好,直接输⼊,或通过数据库或类都可以。可以⽤来在C#中对XML的⽣成。