C#生成XML的三種途徑小結(jié)
1。我認(rèn)為是最原始,最基本的一種:利用XmlDocument向一個(gè)XML文件里寫節(jié)點(diǎn),然后再利用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根節(jié)點(diǎn)
xtw.WriteStartElement("myxm1");
// gnode根節(jié)點(diǎn)下的元素myxmls
xtw.WriteEndElement();
xtw.WriteEndElement();
xtw.WriteEndDocument();
xtw.Close();
doc.Load("new.xml");
}
XmlNode xn = doc.DocumentElement;
//找到根節(jié)點(diǎn)
XmlElement xe = doc.CreateElement("myxml2");
//在根節(jié)點(diǎn)下創(chuàng)建元素,如果是屬性,則用XmlAttribute;
xe.InnerText = "hahaha";
//給子節(jié)點(diǎn)寫入文本節(jié)點(diǎn)(值)
xn.AppendChild(xe);
//根節(jié)點(diǎn)將其納入
doc.Save("new2.xml");
//利用XmlDocument保存文件
}
注意點(diǎn):在新建根節(jié)點(diǎn)的時(shí)候,WriteStartElement,只能嵌套,也就是只能有一個(gè)根節(jié)點(diǎn)。
2。應(yīng)用到數(shù)據(jù)庫,將數(shù)據(jù)庫的DataSet對(duì)象里的值來生成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文件中的根節(jié)點(diǎn)名稱,否則系統(tǒng)將其命名為NewDataSet
SqlDataAdapter sda = new SqlDataAdapter();
sda.SelectCommand = command;
sda.Fill(ds, "DATATABLE");
//DATATABLE為所生成XML文件中的子節(jié)點(diǎn)名稱,否則系統(tǒng)將其命名為Table。
ds.WriteXml("dbxml.xml");
// DataSet的方法WriteXml將數(shù)據(jù)寫入到XML文件,就是這么一句話。如果不保存到文件,直接ds.GetXML()
}
3。利用XmlSerializer來將類的屬性值轉(zhuǎn)換為XML文件的元素值。用一個(gè)字符串作為一個(gè)XML文檔中的xmlAttribute或xmlElement。[其元素或?qū)傩杂深惖亩x來設(shè)置(xml串行化)]
using System;System.xml.Serialization;
3.1.先初始化一個(gè)類,設(shè)置屬性值
[XmlRoot("Truck")]
//----設(shè)置作為XML中的根元素名稱
public Truck()
{ }
[XmlAttribute("id")]
//--------設(shè)置作為xml中的屬性
public int ID
{
get{return this._id;}
set { this._id = value; }
}
[XmlElement("chepai")]
//------設(shè)置作為XML中的元素(默認(rèn)狀態(tài))
public string cheID
{
get {
return this._cheID;
}
set {
this._cheID = value;
}
}
private int _id = 0;
private string _cheID = "";
3.2.創(chuàng)建XmlSerializer實(shí)例
class XXX {
XmlSerializer ser = new XmlSerializer(Type.GetType("forxml.truck"));
Truck tr = new Truck();
tr.ID = 1;
tr.cheID = "贛A T34923";
}
3.3.Serialize方法--完成對(duì)類的串行化
XmlTextWriter xtw = new XmlTextWriter("myxml.xml",Encoding.UTF8);
用XmlTextWriter 創(chuàng)建一個(gè)XML文件
ser.Serialize(xtw, tr);
如果只想顯示,可以直接ser.Serialize(Console.Out, tr);
}
個(gè)人總結(jié),這里只敘述了三種方法,靈活應(yīng)用后會(huì)很好,直接輸入,或通過數(shù)據(jù)庫或類都可以。可以用來在C#中對(duì)XML的生成。
- C# XML操作 代碼大全(讀XML,寫XML,更新,刪除節(jié)點(diǎn),與dataset結(jié)合等)
- C#對(duì)XML文件的各種操作實(shí)現(xiàn)方法
- C#對(duì)象與XMl文件之間的相互轉(zhuǎn)換
- C# WinForm開發(fā)中使用XML配置文件實(shí)例
- C#中XmlTextWriter讀寫xml文件詳細(xì)介紹
- C#實(shí)現(xiàn)復(fù)雜XML的序列化與反序列化
- C# 寫入XML文檔三種方法詳細(xì)介紹
- C# XML與Json之間相互轉(zhuǎn)換實(shí)例詳解
- 基于C#中XmlReader讀取Xml的深入分析
- c#讀取xml文件到datagridview實(shí)例
- 操作XML文檔遇到的XMLNS問題及解決方法 (C# 和 PHP)
- C# xmlSerializer簡(jiǎn)單用法示例
相關(guān)文章
C# 定時(shí)器保活機(jī)制引起的內(nèi)存泄露問題解決
這篇文章主要介紹了C# 定時(shí)器?;顧C(jī)制引起的內(nèi)存泄露問題解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02
C#中DataTable和List互轉(zhuǎn)的示例代碼
很多場(chǎng)景下,我們需要將List轉(zhuǎn)換成為DataTable,本文主要介紹了C#中DataTable和List互轉(zhuǎn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04
C#實(shí)現(xiàn)微信公眾號(hào)群發(fā)消息(解決一天只能發(fā)一次的限制)實(shí)例分享
經(jīng)過幾天研究網(wǎng)上的代碼和謝燦大神的幫忙,今天終于用C#實(shí)現(xiàn)了微信公眾號(hào)群發(fā)消息,現(xiàn)在分享一下2013-09-09
C#在foreach遍歷刪除集合中元素的三種實(shí)現(xiàn)方法
這篇文章主要給大家總結(jié)介紹了關(guān)于C#在foreach遍歷刪除集合中元素的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用C#具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12

