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 } }

相关文章

php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念