C#生成XML的三种途径小结
程序员文章站
2023-12-20 23:44:58
1。我认为是最原始,最基本的一种:利用xmldocument向一个xml文件里写节点,然后再利用xmldocument保存文件。 &nbs...
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的生成。