博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据集转xml
阅读量:4973 次
发布时间:2019-06-12

本文共 5090 字,大约阅读时间需要 16 分钟。

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(@"");
            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 + " />"; }
}

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1833187

转载于:https://www.cnblogs.com/wdw31210/archive/2012/02/20/2359611.html

你可能感兴趣的文章
密码学概念
查看>>
浅析MySQL中concat以及group_concat的使用
查看>>
【转】阿狸面试题
查看>>
2016-8-20晨型养成第五天
查看>>
cocos下的UI编辑器--BoomEditor使用教程(3)--动画编辑模式
查看>>
利用anaconda2随意切换proto的版本,多proto并存,protobuf,libprotobuf
查看>>
.net下几种常用的对称加解密
查看>>
reactjs学习一(环境搭配react+es6+webpack热部署)
查看>>
Linux 高性能服务器编程——高级I/O函数
查看>>
安卓天天练练(二)相对布局和帧布局
查看>>
更新与升级 FreeBSD
查看>>
File.Exists 文件不存在 Or FileNotFoundException
查看>>
BZOJ 1529 [POI2005]ska Piggy banks:并查集
查看>>
java多态与异常处理——动手动脑
查看>>
软件测试技术HW03-printPrimes()
查看>>
SQL Server2008附加数据库之后显示为只读时解决方法
查看>>
linux vi编辑
查看>>
IO流--复制picture ,mp3
查看>>
linux 环境变量
查看>>
JQuery UI datepicker 使用方法
查看>>