当前位置: 编程技术>.net/c#/asp.net
C# 生成XML文档的三种方法与代码实例
来源: 互联网 发布时间:2014-08-30
本文导语: 之前介绍过C#写入Xml文档的三种方法,今天为大家介绍C#生成Xml文件的三种方法。有什么不同呢?有兴趣的朋友,可以对比阅读下。 1,基础方法,用XmlDocument向一个XML文件里写节点,然后再利用XmlDocument保存文件。 首先,加载...
之前介绍过C#写入Xml文档的三种方法,今天为大家介绍C#生成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保存文件
}
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()
}
{
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 = "";
//----设置作为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";
}
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);
}
如果只想显示,可以直接ser.Serialize(Console.Out, tr);
}
至于哪种方法更好呢,还是建议你测试下这三种方法的代码,自己体会一下,或许用数据库更好,也许直接用XmlDocument更适合你。