C#保存与读取DataTable信息到XML格式的方法
程序员文章站
2023-10-23 21:20:05
本文实例讲述了c#保存与读取datatable信息到xml格式的方法。分享给大家供大家参考。具体如下:
这里主要实现:
1.将datatable中的信息保存到xml中...
本文实例讲述了c#保存与读取datatable信息到xml格式的方法。分享给大家供大家参考。具体如下:
这里主要实现:
1.将datatable中的信息保存到xml中
2.将以上述格式在xml中保存的信息读取到datatable内
一、将datatable的内容写入到xml文件中
/// <summary> /// 将datatable的内容写入到xml文件中 /// </summary> /// <param name="dt">数据源</param> /// <param name="address">xml文件地址</param> public static bool writetoxml(datatable dt, string address) { try { //如果文件datatable.xml存在则直接删除 if (file.exists(address)) { file.delete(address); } xmltextwriter writer = new xmltextwriter(address, encoding.getencoding("gbk")); writer.formatting = formatting.indented; //xml文档创建开始 writer.writestartdocument(); writer.writecomment("datatable: " + dt.tablename); writer.writestartelement("datatable"); //datatable开始 writer.writeattributestring("tablename", dt.tablename); writer.writeattributestring("countofrows", dt.rows.count.tostring()); writer.writeattributestring("countofcolumns", dt.columns.count.tostring()); writer.writestartelement("clomunname", ""); //columnname开始 for (int i = 0; i < dt.columns.count; i++) { writer.writeattributestring( "column" + i.tostring(), dt.columns[i].columnname); } writer.writeendelement(); //columnname结束 //按行各行 for (int j = 0; j < dt.rows.count; j++) { writer.writestartelement("row" + j.tostring(), ""); //打印各列 for (int k = 0; k < dt.columns.count; k++) { writer.writeattributestring( "column" + k.tostring(), dt.rows[j][k].tostring()); } writer.writeendelement(); } writer.writeendelement(); //datatable结束 writer.writeenddocument(); writer.close(); //xml文档创建结束 } catch (exception ex) { console.writeline(ex.message); return false; } return true; }
二、将以上述格式在xml中保存的信息读取到datatable内
/// <summary> /// 从xml文件中读取一个datatable /// </summary> /// <param name="dt">数据源</param> /// <param name="address">xml文件地址</param> /// <returns></returns> public static datatable readfromxml(string address) { datatable dt = new datatable(); try { if (!file.exists(address)) { throw new exception("文件不存在!"); } xmldocument xmldoc = new xmldocument(); xmldoc.load(address); xmlnode root = xmldoc.selectsinglenode("datatable"); //读取表名 dt.tablename = ((xmlelement)root).getattribute("tablename"); //console.writeline("读取表名: {0}", dt.tablename); //读取行数 int countofrows = 0; if (!int.tryparse(((xmlelement)root). getattribute("countofrows").tostring(), out countofrows)) { throw new exception("行数转换失败"); } //读取列数 int countofcolumns = 0; if (!int.tryparse(((xmlelement)root). getattribute("countofcolumns").tostring(), out countofcolumns)) { throw new exception("列数转换失败"); } //从第一行中读取记录的列名 foreach (xmlattribute xa in root.childnodes[0].attributes) { dt.columns.add(xa.value); //console.writeline("建立列: {0}", xa.value); } //从后面的行中读取行信息 for (int i = 1; i < root.childnodes.count; i++) { string[] array = new string[root.childnodes[0].attributes.count]; for (int j = 0; j < array.length; j++) { array[j] = root.childnodes[i].attributes[j].value.tostring(); } dt.rows.add(array); //console.writeline("行插入成功"); } } catch (exception ex) { console.writeline(ex.message); return new datatable(); } return dt; }
三、main函数调用
static void main(string[] args) { //1.将datatable内容写入到xml文件 //建立datatable取名table4test datatable dt1 = new datatable("table4test"); //生成四列,列名为column0-3 dt1.columns.add("column0"); dt1.columns.add("column1"); dt1.columns.add("column2"); dt1.columns.add("column3"); //生成四行 dt1.rows.add("a0", "a1", "a2", "a3"); dt1.rows.add("b0", "b1", "b2", "b3"); dt1.rows.add("c0", "c1", "c2", "c3"); //写入到xml if (writetoxml(dt1, "datatable.xml")) { console.writeline("写入成功"); } //================================ //2.从xml文件中读取内容到datatable //读取信息 datatable dt2 = readfromxml("datatable.xml"); //输出读取的信息 console.writeline("读取到的信息:"); for (int i = 0; i < dt2.rows.count; i++) { for (int j = 0; j < dt2.columns.count; j++) { console.write(dt2.rows[i][j].tostring() + "\t"); } console.writeline(); } console.readline(); }
四、程序运行结果
程序运行结果
写入后的xml文件
希望本文所述对大家的c#程序设计有所帮助。
上一篇: 吃什么食物对骨质增生有好处