国产化驱动经济自主性与科技创新的未来之路
674
2022-11-22
数据集转xml
XmlDatasetConvert 该类提供了四种方法:1、将xml对象内容字符串转换为DataSet2、将xml文件转换为DataSet3、将DataSet转换为xml对象字符串4、将DataSet转换为xml文件
XmlDatasetConvert.csusing System;using System.Collections.Generic;using System.Text;using System.Data;using System.IO;using System.Xml;
namespace XmlDesign{ class XmlDatasetConvert { //将xml对象内容字符串转换为DataSet public static DataSet ConvertXMLToDataSet(string xmlData) { StringReader stream = null; XmlTextReader reader = null; try { DataSet xmlDS = new DataSet(); stream = new StringReader(xmlData); //从stream装载到XmlTextReader reader = new XmlTextReader(stream); xmlDS.ReadXml(reader); return xmlDS; } catch (System.Exception ex) { throw ex; } finally { if (reader != null) reader.Close(); } }
//将xml文件转换为DataSet public static DataSet ConvertXMLFileToDataSet(string xmlFile) { StringReader stream = null; XmlTextReader reader = null; try { XmlDocument xmld = new XmlDocument(); xmld.Load(xmlFile);
DataSet xmlDS = new DataSet(); stream = new StringReader(xmld.InnerXml); //从stream装载到XmlTextReader reader = new XmlTextReader(stream); xmlDS.ReadXml(reader); //xmlDS.ReadXml(xmlFile); return xmlDS; } catch (System.Exception ex) { throw ex; } finally { if (reader != null) reader.Close(); } }
//将DataSet转换为xml对象字符串 public static string ConvertDataSetToXML(DataSet xmlDS) { MemoryStream stream = null; XmlTextWriter writer = null;
try { stream = new MemoryStream(); //从stream装载到XmlTextReader writer = new XmlTextWriter(stream, Encoding.Unicode);
//用WriteXml方法写入文件. xmlDS.WriteXml(writer); int count = (int)stream.Length; byte[] arr = new byte[count]; stream.Seek(0, SeekOrigin.Begin); stream.Read(arr, 0, count);
UnicodeEncoding utf = new UnicodeEncoding(); return utf.GetString(arr).Trim(); } catch (System.Exception ex) { throw ex; } finally { if (writer != null) writer.Close(); } }
//将DataSet转换为xml文件 public static void ConvertDataSetToXMLFile(DataSet xmlDS,string xmlFile) { MemoryStream stream = null; XmlTextWriter writer = null;
try { stream = new MemoryStream(); //从stream装载到XmlTextReader writer = new XmlTextWriter(stream, Encoding.Unicode);
//用WriteXml方法写入文件. xmlDS.WriteXml(writer); int count = (int)stream.Length; byte[] arr = new byte[count]; stream.Seek(0, SeekOrigin.Begin); stream.Read(arr, 0, count);
//返回Unicode编码的文本 UnicodeEncoding utf = new UnicodeEncoding(); StreamWriter sw = new StreamWriter(xmlFile); sw.WriteLine(""); sw.WriteLine(utf.GetString(arr).Trim()); sw.Close(); } catch( System.Exception ex ) { throw ex; } finally { if (writer != null) writer.Close(); } }
}}
使用示例using System;using System.Collections.Generic;using System.Text;using System.Xml;using System.Data;
namespace XmlDesign{ class Program { static void Main(string[] args) { DataSet ds = new DataSet();
转换一个XML文件(本地\网络均可)为一个DataSet#region 转换一个XML文件(本地\网络均可)为一个DataSet ////F:\study\001CSharp_Study\002Source\XmlDesign\XmlDesign\Save_Plan.xml ds = XmlDatasetConvert.ConvertXMLFileToDataSet(@"Console.WriteLine("数据集名为\"{0}\",包含{1}个表", ds.DataSetName, ds.Tables.Count); foreach(DataTable dt in ds.Tables) { PrintTableName(dt.TableName); }; #endregion
构造一个DataSet,并转换为XML字符串#region 构造一个DataSet,并转换为XML字符串 DataSet ds1 = new DataSet(); DataTable dt1 = new DataTable(); dt1.TableName = "test"; dt1.Columns.Add("id"); dt1.Columns.Add("name"); dt1.Rows.Add("i001", "hekui"); dt1.Rows.Add("i002", "liyang");
DataTable dt2 = new DataTable(); dt2.TableName = "test1"; dt2.Columns.Add("bookid"); dt2.Columns.Add("bookname"); dt2.Rows.Add("b001", "书本1"); dt2.Rows.Add("b002", "书本2");
ds1.Tables.Add(dt1); ds1.Tables.Add(dt2); ds1.DataSetName = "方案"; string xmlOut = XmlDatasetConvert.ConvertDataSetToXML(ds1); #endregion
转换一个XML字符串为一个DataSet#region 转换一个XML字符串为一个DataSet DataSet ds2 = new DataSet(); ds2 = XmlDatasetConvert.ConvertXMLToDataSet(xmlOut); Console.WriteLine("数据集名为\"{0}\",包含{1}个表", ds2.DataSetName, ds2.Tables.Count); foreach (DataTable dt in ds2.Tables) { PrintTableName(dt.TableName); }; #endregion
转换一个Dataset为一个XML文件#region 转换一个Dataset为一个XML文件 XmlDatasetConvert.ConvertDataSetToXMLFile(ds2, "c:\\adadsda1.xml"); #endregion Console.ReadLine(); }
private static void PrintTableName(string tableName) { Console.WriteLine(tableName); } }}
---------------------------------new
public static string SerializeDataTableXml(DataTable pDt, string pRoot, string pTag) { try { int strColCount = pDt.Columns.Count; DataColumnCollection dcc = pDt.Columns;
XmlDocument xmlDoc = new XmlDocument(); XmlElement xmlRoot = xmlDoc.CreateElement(pRoot); xmlDoc.AppendChild(xmlRoot);
foreach (DataRow dr in pDt.Rows) { XmlElement xmlElem = xmlDoc.CreateElement(pTag); xmlRoot.AppendChild(xmlElem); for (int i = 0; i < strColCount; i++) { XmlAttribute xmlAttr = xmlDoc.CreateAttribute(dcc[i].ColumnName.ToString().ToLower()); xmlAttr.Value = dr[i].ToString(); xmlElem.Attributes.Append(xmlAttr); } } return xmlDoc.OuterXml; } catch { return "<" + pRoot + " />"; } }
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~