• xml 与 DataSet 互相转换


    本文转载:http://www.cnblogs.com/30ErLi/archive/2010/09/21/1832694.html

    XmlDatasetConvert 该类提供了四种方法:

        1、将xml对象内容字符串转换为DataSet
        2、将xml文件转换为DataSet
        3、将DataSet转换为xml对象字符串
        4、将DataSet转换为xml文件

    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

                
    构造一个DataSet,并转换为XML字符串

                
    转换一个XML字符串为一个DataSet

                
    #region 转换一个Dataset为一个XML文件
                XmlDatasetConvert.ConvertDataSetToXMLFile(ds2, 
    "c:\adadsda1.xml");
                
    #endregion


                Console.ReadLine();
            }


            
    private static void PrintTableName(string tableName)
            
    {
                Console.WriteLine(tableName);
            }

        }

    }
  • 相关阅读:
    poj 1655 Balancing Act 树的重心
    poj 1985 Cow Marathon 树的直径
    hdu 4607 Park Visit 求树的直径
    hdu 1548 A strange lift 宽搜bfs+优先队列
    poj 2711 Leapin' Lizards && BZOJ 1066: [SCOI2007]蜥蜴 最大流
    poj 2449 Remmarguts' Date K短路+A*
    hdu 1285 确定比赛名次 拓扑排序
    hdu 3061 Battle 最大权闭合图
    hdu 3879 Base Station 最大权闭合图
    poj 2987 Firing 最大权闭合图
  • 原文地址:https://www.cnblogs.com/51net/p/3149705.html
Copyright © 2020-2023  润新知