前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >XML与DataSet的相互转换类

XML与DataSet的相互转换类

作者头像
Java架构师必看
发布2021-03-22 10:17:56
5540
发布2021-03-22 10:17:56
举报
文章被收录于专栏:Java架构师必看

送给大家一个XML与DataSet的相互转换的类:XmlDatasetConvert该类提供了四种网络

强烈推介IDEA2020.2破解激活,IntelliJ IDEA 注册码,2020.2 IDEA 激活码

送给大家一个XML与DataSet的相互转换的类: XmlDatasetConvert 该类提供了四种方法: 1、将xml对象内容字符串转换为DataSet 2、将xml文件转换为DataSet 3、将DataSet转换为xml对象字符串 4、将DataSet转换为xml文件

XmlDatasetConvert.cs using 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("<?xml version=/"1.0/" encoding=/"utf-8/"?>");                 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             //http://news.baidu.com/n?cmd=1&class=sportnews&tn=rss             //F:/study/001CSharp_Study/002Source/XmlDesign/XmlDesign/Save_Plan.xml             ds = XmlDatasetConvert.ConvertXMLFileToDataSet(@"http://news.baidu.com/n?cmd=1&class=sportnews&tn=rss");             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);         }     } }

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档