zoukankan      html  css  js  c++  java
  • xml

    using System; 
    using System.Data; 
    using System.IO; 
    using System.Xml; 
    using System.Text; 
    
    namespace HyeyClass.Common
    {
    	/// <summary>
    	/// Xml 的摘要说明。
    	/// </summary>
    	public class Xml
    	{
    		public Xml()
    		{
    			//
    			// TODO: 在此处添加构造函数逻辑
    			//
    		}
    		
    
    		
    		/// <summary>
    		/// Converts the data table to XML.
    		/// </summary>
    		/// <param name="xmlDS">The XML DS.</param>
    		/// <returns></returns>
    		public static string ConvertDataTableToXML(DataTable xmlDS) 
    		{ 
    			MemoryStream stream = null; 
    			XmlTextWriter writer = null; 
    			try 
    			{ 
    				stream = new MemoryStream(); 
    				writer = new XmlTextWriter(stream, Encoding.Default); 
    				xmlDS.WriteXml(writer); 
    				int count = (int)stream.Length; 
    				byte[] arr = new byte[count]; 
    				stream.Seek(0, SeekOrigin.Begin); 
    				stream.Read(arr, 0, count); 
    				UTF8Encoding utf = new UTF8Encoding(); 
    				return utf.GetString(arr).Trim(); 
    			} 
    			catch 
    			{ 
    				return String.Empty; 
    			} 
    			finally 
    			{ 
    				if (writer != null) writer.Close(); 
    			} 
    		}
    
    
    		/// <summary>
    		/// Converts the XML to data set.
    		/// </summary>
    		/// <param name="xmlData">The XML data.</param>
    		/// <returns></returns>
    		public static DataSet ConvertXMLToDataSet(string xmlData) 
    		{ 
    			StringReader stream = null; 
    			XmlTextReader reader = null; 
    			try 
    			{ 
    				DataSet xmlDS = new DataSet(); 
    				stream = new StringReader(xmlData); 
    				reader = new XmlTextReader(stream); 
    				xmlDS.ReadXml(reader); 
    				return xmlDS; 
    			} 
    			catch (Exception ex) 
    			{ 
    				string strTest = ex.Message; 
    				return null; 
    			} 
    			finally 
    			{ 
    				if (reader != null) 
    					reader.Close(); 
    			} 
    		}
    	}
    
    	/// <summary>
    	/// 把DataSet、DataTable、DataView格式转换成XML字符串、XML文件
    	/// </summary>
    	public class DataToXml
    	{
    		/// <summary>
    		/// 将DataTable对象转换成XML字符串
    		/// </summary>
    		/// <param name="dt">DataTable对象</param>
    		/// <returns>XML字符串</returns>
    		public static string CDataToXml(DataTable dt)
    		{
    			if (dt != null)
    			{
    				MemoryStream ms = null;
    				XmlTextWriter XmlWt = null;
    				try
    				{
    					ms = new MemoryStream();
    					//根据ms实例化XmlWt
    					XmlWt = new XmlTextWriter(ms, Encoding.Unicode);
    					//获取ds中的数据
    					dt.WriteXml(XmlWt);
    					int count = (int)ms.Length;
    					byte[] temp = new byte[count];
    					ms.Seek(0, SeekOrigin.Begin);
    					ms.Read(temp, 0, count);
    					//返回Unicode编码的文本
    					UnicodeEncoding ucode = new UnicodeEncoding();
    					string returnValue = ucode.GetString(temp).Trim();
    					return returnValue;
    				}
    				catch (System.Exception ex)
    				{
    					throw ex;
    				}
    				finally
    				{
    					//释放资源
    					if (XmlWt != null)
    					{
    						XmlWt.Close();
    						ms.Close();
    						ms.Dispose();
    					}
    				}
    			}
    			else
    			{
    				return "";
    			}
    		}
    
    		/// <summary>
    		/// 将DataSet对象中指定的Table转换成XML字符串
    		/// </summary>
    		/// <param name="ds">DataSet对象</param>
    		/// <param name="tableIndex">DataSet对象中的Table索引</param>
    		/// <returns>XML字符串</returns>
    		public static string CDataToXml(DataSet ds, int tableIndex)
    		{
    			if (tableIndex != -1)
    			{
    				return CDataToXml(ds.Tables[tableIndex]);
    			}
    			else
    			{
    				return CDataToXml(ds.Tables[0]);
    			}
    		}
    
    		/// <summary>
    		/// 将DataSet对象转换成XML字符串
    		/// </summary>
    		/// <param name="ds">DataSet对象</param>
    		/// <returns>XML字符串</returns>
    		public static string CDataToXml(DataSet ds)
    		{
    			return CDataToXml(ds, -1);
    		}
    
    
    		/// <summary>
    		/// 将DataView对象转换成XML字符串
    		/// </summary>
    		/// <param name="dv">DataView对象</param>
    		/// <returns>XML字符串</returns>
    		public static string CDataToXml(DataView dv)
    		{
    			return CDataToXml(dv.Table);
    		} 
    			
    		/// <summary>
    		/// 将DataSet对象数据保存为XML文件
    		/// </summary>
    		/// <param name="dt">DataSet</param>
    		/// <param name="xmlFilePath">XML文件路径</param>
    		/// <returns>bool值</returns>
    		public static bool CDataToXmlFile(DataTable dt, string xmlFilePath)
    		{
    			if ((dt != null) && (!string.IsNullOrEmpty(xmlFilePath)))
    			{
    				string path = HttpContext.Current.Server.MapPath(xmlFilePath);
    				MemoryStream ms = null;
    				XmlTextWriter XmlWt = null;
    				try
    				{
    					ms = new MemoryStream();
    					//根据ms实例化XmlWt
    					XmlWt = new XmlTextWriter(ms, Encoding.Unicode);
    					//获取ds中的数据
    					dt.WriteXml(XmlWt);
    					int count = (int)ms.Length;
    					byte[] temp = new byte[count];
    					ms.Seek(0, SeekOrigin.Begin);
    					ms.Read(temp, 0, count);
    					//返回Unicode编码的文本
    					UnicodeEncoding ucode = new UnicodeEncoding();
    					//写文件
    					StreamWriter sw = new StreamWriter(path);
    					sw.WriteLine("<?xml version='1.0' encoding='utf-8'?>");
    					sw.WriteLine(ucode.GetString(temp).Trim());
    					sw.Close();
    					return true;
    				}
    				catch (System.Exception ex)
    				{
    					throw ex;
    				}
    				finally
    				{
    					//释放资源
    					if (XmlWt != null)
    					{
    						XmlWt.Close();
    						ms.Close();
    						ms.Dispose();
    					}
    				}
    			}
    			else
    			{
    				return false;
    			}
    		}
    			
    			
    		/// <summary>
    		/// 将DataSet对象中指定的Table转换成XML文件
    		/// </summary>
    		/// <param name="ds">DataSet对象</param>
    		/// <param name="tableIndex">DataSet对象中的Table索引</param>
    		/// <param name="xmlFilePath">xml文件路径</param>
    		/// <returns>bool]值</returns>
    		public static bool CDataToXmlFile(DataSet ds, int tableIndex, string xmlFilePath)
    		{
    			if (tableIndex != -1)
    			{
    				return CDataToXmlFile(ds.Tables[tableIndex], xmlFilePath);
    			}
    			else
    			{
    				return CDataToXmlFile(ds.Tables[0], xmlFilePath);
    			}
    		}
    			
    			
    		/// <summary>
    		/// 将DataSet对象转换成XML文件
    		/// </summary>
    		/// <param name="ds">DataSet对象</param>
    		/// <param name="xmlFilePath">xml文件路径</param>
    		/// <returns>bool]值</returns>
    		public static bool CDataToXmlFile(DataSet ds, string xmlFilePath)
    		{
    			return CDataToXmlFile(ds, -1, xmlFilePath);
    		}
    			
    		/// <summary>
    		/// 将DataView对象转换成XML文件
    		/// </summary>
    		/// <param name="dv">DataView对象</param>
    		/// <param name="xmlFilePath">xml文件路径</param>
    		/// <returns>bool]值</returns>
    		public static bool CDataToXmlFile(DataView dv, string xmlFilePath)
    		{
    			return CDataToXmlFile(dv.Table, xmlFilePath);
    		}
    	}
    
    
    	/// <summary>
    	/// XML形式的字符串、XML文江转换成DataSet、DataTable格式
    	/// </summary>
    	public class XmlToData
    	{
    		/// <summary>
    		/// 将Xml内容字符串转换成DataSet对象
    		/// </summary>
    		/// <param name="xmlStr">Xml内容字符串</param>
    		/// <returns>DataSet对象</returns>
    		public static DataSet CXmlToDataSet(string xmlStr)
    		{
    			if (!string.IsNullOrEmpty(xmlStr))
    			{
    				StringReader StrStream = null;
    				XmlTextReader Xmlrdr = null;
    				try
    				{
    					DataSet ds = new DataSet();
    					//读取字符串中的信息
    					StrStream = new StringReader(xmlStr);
    					//获取StrStream中的数据
    					Xmlrdr = new XmlTextReader(StrStream);
    					//ds获取Xmlrdr中的数据                
    					ds.ReadXml(Xmlrdr);
    					return ds;
    				}
    				catch (Exception e)
    				{
    					throw e;
    				}
    				finally
    				{
    					//释放资源
    					if (Xmlrdr != null)
    					{
    						Xmlrdr.Close();
    						StrStream.Close();
    						StrStream.Dispose();
    					}
    				}
    			}
    			else
    			{
    				return null;
    			}
    		}
    			
    		/// <summary>
    		/// 将Xml字符串转换成DataTable对象
    		/// </summary>
    		/// <param name="xmlStr">Xml字符串</param>
    		/// <param name="tableIndex">Table表索引</param>
    		/// <returns>DataTable对象</returns>
    		public static DataTable CXmlToDatatTable(string xmlStr, int tableIndex)
    		{
    			return CXmlToDataSet(xmlStr).Tables[tableIndex];
    		}
    			
    		/// <summary>
    		/// 将Xml字符串转换成DataTable对象
    		/// </summary>
    		/// <param name="xmlStr">Xml字符串</param>
    		/// <returns>DataTable对象</returns>
    		public static DataTable CXmlToDatatTable(string xmlStr)
    		{
    			return CXmlToDataSet(xmlStr).Tables[0];
    		}
    			
    		/// <summary>
    		/// 读取Xml文件信息,并转换成DataSet对象
    		/// </summary>
    		/// <remarks>
    		/// DataSet ds = new DataSet();
    		/// ds = CXmlFileToDataSet("/XML/upload.xml");
    		/// </remarks>
    		/// <param name="xmlFilePath">Xml文件地址</param>
    		/// <returns>DataSet对象</returns>
    		public static DataSet CXmlFileToDataSet(string xmlFilePath)
    		{
    			if (!string.IsNullOrEmpty(xmlFilePath))
    			{
    				string path = HttpContext.Current.Server.MapPath(xmlFilePath);
    				StringReader StrStream = null;
    				XmlTextReader Xmlrdr = null;
    				try
    				{
    					XmlDocument xmldoc = new XmlDocument();
    					//根据地址加载Xml文件
    					xmldoc.Load(path);
    
    					DataSet ds = new DataSet();
    					//读取文件中的字符流
    					StrStream = new StringReader(xmldoc.InnerXml);
    					//获取StrStream中的数据
    					Xmlrdr = new XmlTextReader(StrStream);
    					//ds获取Xmlrdr中的数据
    					ds.ReadXml(Xmlrdr);
    					return ds;
    				}
    				catch (Exception e)
    				{
    					throw e;
    				}
    				finally
    				{
    					//释放资源
    					if (Xmlrdr != null)
    					{
    						Xmlrdr.Close();
    						StrStream.Close();
    						StrStream.Dispose();
    					}
    				}
    			}
    			else
    			{
    				return null;
    			}
    		}		
    			
    			
    		/// <summary>
    		/// 读取Xml文件信息,并转换成DataTable对象
    		/// </summary>
    		/// <param name="xmlFilePath">xml文件路径</param>
    		/// <param name="tableIndex">Table索引</param>
    		/// <returns>DataTable对象</returns>
    		public static DataTable CXmlToDataTable(string xmlFilePath, int tableIndex)
    		{
    			return CXmlFileToDataSet(xmlFilePath).Tables[tableIndex];
    		}
    			
    			
    		/// <summary>
    		/// 读取Xml文件信息,并转换成DataTable对象
    		/// </summary>
    		/// <param name="xmlFilePath">xml文江路径</param>
    		/// <returns>DataTable对象</returns>
    		public static DataTable CXmlToDataTable(string xmlFilePath)
    		{
    			return CXmlFileToDataSet(xmlFilePath).Tables[0];
    		}
    	}
    }
    
    
  • 相关阅读:
    洛谷P3953 逛公园
    洛谷P1247 取火柴游戏
    洛谷P2024 食物链
    洛谷P2680 运输计划
    hdu 1495 非常可乐(bfs)
    poj3984 迷宫问题(简单的输出路径的bfs)
    Codeforces 729C Road to Cinema(二分)
    Codeforces Technocup 2017
    Codeforces Technocup 2017
    poj 2251 Dungeon Master(bfs)
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/1727068.html
Copyright © 2011-2022 走看看