XML操作

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Serialization;
using System.IO;
using System.Data;
using System.Globalization;
 
#endregion




namespace Pay.Util
{
    /// <summary>
    /// XML操作类
    /// </summary>
    public class XML
    {
        #region (public) xml序列化 _XMLSerialize
        /// <summary>
        /// xml序列化
        /// </summary>
        /// <param name="obj">obj类</param>
        /// <returns>string字符串</returns>
        public static string _XMLSerialize( object obj )
        {
            XmlSerializer xs = new XmlSerializer( obj.GetType() );
            StringBuilder strBuidler = new StringBuilder();
            XmlWriterSettings setting = new XmlWriterSettings();
            setting.OmitXmlDeclaration = true;//去掉xml版本声明
            System.Xml.XmlWriter xw = System.Xml.XmlWriter.Create( strBuidler, setting );
            XmlSerializerNamespaces xmlns = new XmlSerializerNamespaces();
            xmlns.Add( string.Empty, string.Empty );
            xs.Serialize( xw, obj, xmlns );
            xw.Close();
            return strBuidler.ToString();
        }


        #endregion


        #region (public) xml序列化 _ConvertToString
        /// <summary>
        /// xml序列化
        /// </summary>
        /// <param name="obj">obj类</param>
        /// <returns>string字符串</returns>
        public static string _ConvertToString( object objectToConvert )
        {
            string xml = null;
            if ( objectToConvert == null )
                return xml;


            Type t = objectToConvert.GetType();


            XmlSerializer ser = new XmlSerializer( t );
            XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
            ns.Add( "", "" );
            using ( StringWriter writer = new StringWriter( CultureInfo.InvariantCulture ) )
            {
                ser.Serialize( writer, objectToConvert, ns );
                xml = writer.ToString();
                writer.Close();
            }
            return xml;
        }


        #endregion




        #region (public) xml反序列化 _XMLDeserialize
        /// <summary>
        /// xml反序列化
        /// </summary>
        /// <param name="s">字符串string</param>
        /// <param name="type">obj type</param>
        /// <returns>obj</returns>
        public static object _XMLDeserialize( string s, Type type )
        {




            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.LoadXml( s );
            s = xmlDoc.DocumentElement.OuterXml;
            XmlSerializer xs = new XmlSerializer( type );
            Stream stream = new System.IO.MemoryStream( System.Text.ASCIIEncoding.UTF8.GetBytes( s ) );
            object obj = xs.Deserialize( stream );
            stream.Close();
            return obj;
        }






        #endregion


        #region (public) xml反序列化 _XML2DataSet


        /// <summary>
        /// xml to dataset
        /// </summary>
        /// <param name="xmlData">xml字符串</param>
        /// <returns>dataset</returns>
        public static DataSet _XML2DataSet( string xmlData )
        {
            StringReader stream = null;
            XmlTextReader reader = null;
            //try
            //{
            DataSet xmlDS = new DataSet();
            stream = new StringReader( xmlData );
            reader = new XmlTextReader( stream );
            xmlDS.ReadXml( reader );
            if ( reader != null )
            {
                reader.Close();
            }
            return xmlDS;
            //}
            //catch (Exception ex)
            //{
            //    string strTest = ex.Message;
            //    return null;
            //}
            //finally
            //{
            //    if (reader != null)
            //        reader.Close();
            //}
        }


        #endregion


        #region (public) XML反序列化 _ConvertFileToObject
        /// <summary>
        /// 读取文件转化为对象
        /// </summary>
        /// <param name="path">路径</param>
        /// <param name="objectType">对象类型</param>
        /// <returns>对象</returns>
        public static object _ConvertFileToObject( string path, Type objectType )
        {
            object convertedObject = null;


            if ( path != null && path.Length > 0 )
            {
                using ( FileStream fs = new FileStream( path, FileMode.Open, FileAccess.Read ) )
                {
                    XmlSerializer ser = new XmlSerializer( objectType );
                    convertedObject = ser.Deserialize( fs );
                    fs.Close();
                }
            }
            return convertedObject;
        }


        #endregion


        #region (public) xml 反序列化 _ConvertXmlToObject
        /// <summary>
        /// 将xml字符串转换为对应的实体
        /// </summary>
        /// <typeparam name="T">实体类型</typeparam>
        /// <param name="xmlDocument">xml字符串</param>
        /// <returns>实体类型对象</returns>
        public static T _ConvertXmlToObject<T>( string xml ) where T : class, new()
        {
            if ( string.IsNullOrEmpty( xml ) )
                return new T();
            XmlSerializer serializer = new XmlSerializer( typeof( T ) );
            T resultObject;
            using ( TextReader reader = new StringReader( xml ) )
            {
                resultObject = (T)serializer.Deserialize( reader );
            }
            return resultObject;
        }


        #endregion


        #region(public) 对象保存为xml _SaveAsXML
        /// <summary>
        ///  把对象序列化为XML 并保存为文件
        /// </summary>
        /// <param name="objectToConvert">对象</param>
        /// <param name="path">路径</param>
        public static void _SaveAsXML( object objectToConvert, string path )
        {
            if ( objectToConvert != null )
            {
                Type t = objectToConvert.GetType();
                XmlSerializer ser = new XmlSerializer( t );
                using ( StreamWriter writer = new StreamWriter( path ) )
                {
                    ser.Serialize( writer, objectToConvert );
                    writer.Close();
                }
            }
        }


        #endregion
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值