数据集转xml

网友投稿 684 2022-11-22

数据集转xml

数据集转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小时内删除侵权内容。

上一篇:关于DataTable的Compute使用
下一篇:OpenSSL CentOS 7 安装
相关文章

 发表评论

暂时没有评论,来抢沙发吧~