DataToXml.cs 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. using System.Data;
  2. using System.IO;
  3. using System.Text;
  4. using System.Web;
  5. using System.Xml;
  6. namespace IwbZero.ToolCommon.FileHelpers
  7. {
  8. /// <summary>
  9. /// 把DataSet、DataTable、DataView格式转换成XML字符串、XML文件
  10. /// </summary>
  11. public static class DataToXml
  12. {
  13. ///// <summary>
  14. ///// 将DataTable对象转换成XML字符串
  15. ///// </summary>
  16. ///// <param name="dt">DataTable对象</param>
  17. ///// <returns>XML字符串</returns>
  18. //public static string CDataToXml(DataTable dt)
  19. //{
  20. // if (dt != null)
  21. // {
  22. // MemoryStream ms = null;
  23. // XmlTextWriter XmlWt = null;
  24. // try
  25. // {
  26. // ms = new MemoryStream();
  27. // //根据ms实例化XmlWt
  28. // XmlWt = new XmlTextWriter(ms, Encoding.Unicode);
  29. // //获取ds中的数据
  30. // dt.WriteXml(XmlWt);
  31. // int count = (int)ms.Length;
  32. // byte[] temp = new byte[count];
  33. // ms.Seek(0, SeekOrigin.Begin);
  34. // ms.Read(temp, 0, count);
  35. // //返回Unicode编码的文本
  36. // UnicodeEncoding ucode = new UnicodeEncoding();
  37. // string returnValue = ucode.GetString(temp).Trim();
  38. // return returnValue;
  39. // }
  40. // catch (System.Exception ex)
  41. // {
  42. // throw ex;
  43. // }
  44. // finally
  45. // {
  46. // //释放资源
  47. // if (XmlWt != null)
  48. // {
  49. // XmlWt.Close();
  50. // ms.Close();
  51. // ms.Dispose();
  52. // }
  53. // }
  54. // }
  55. // else
  56. // {
  57. // return "";
  58. // }
  59. //}
  60. //以上转换在一些xml版本中存在问题,会出现SoapToolkit调用的时候返回值错误,那么这时候可以用以下这个方法做转换(建议大家都用以下这个方法.......因为本人曾经深受上面那个方法其害......T_T)。
  61. /// <summary>
  62. /// 将DataTable对象转换成XML字符串
  63. /// </summary>
  64. /// <param name="dt">DataTable对象</param>
  65. /// <returns>XML字符串</returns>
  66. public static string CDataToXml(this DataTable dt)
  67. {
  68. StringBuilder strXml = new StringBuilder();
  69. strXml.AppendLine("<XmlTable>");
  70. for (int i = 0; i < dt.Rows.Count; i++)
  71. {
  72. strXml.AppendLine("<rows>");
  73. for (int j = 0; j < dt.Columns.Count; j++)
  74. {
  75. strXml.AppendLine("<" + dt.Columns[j].ColumnName + ">" + dt.Rows[i][j] + "</" + dt.Columns[j].ColumnName + ">");
  76. }
  77. strXml.AppendLine("</rows>");
  78. }
  79. strXml.AppendLine("</XmlTable>");
  80. return strXml.ToString();
  81. }
  82. /// <summary>
  83. /// 将DataSet对象中指定的Table转换成XML字符串
  84. /// </summary>
  85. /// <param name="ds">DataSet对象</param>
  86. /// <param name="tableIndex">DataSet对象中的Table索引</param>
  87. /// <returns>XML字符串</returns>
  88. public static string CDataToXml(this DataSet ds, int tableIndex)
  89. {
  90. if (tableIndex != -1)
  91. {
  92. return CDataToXml(ds.Tables[tableIndex]);
  93. }
  94. else
  95. {
  96. return CDataToXml(ds.Tables[0]);
  97. }
  98. }
  99. /**//// <summary>
  100. /// 将DataSet对象转换成XML字符串
  101. /// </summary>
  102. /// <param name="ds">DataSet对象</param>
  103. /// <returns>XML字符串</returns>
  104. public static string CDataToXml(DataSet ds)
  105. {
  106. return CDataToXml(ds, -1);
  107. }
  108. /**//// <summary>
  109. /// 将DataView对象转换成XML字符串
  110. /// </summary>
  111. /// <param name="dv">DataView对象</param>
  112. /// <returns>XML字符串</returns>
  113. public static string CDataToXml(DataView dv)
  114. {
  115. return CDataToXml(dv.Table);
  116. }
  117. /**//// <summary>
  118. /// 将DataSet对象数据保存为XML文件
  119. /// </summary>
  120. /// <param name="dt">DataSet</param>
  121. /// <param name="xmlFilePath">XML文件路径</param>
  122. /// <returns>bool值</returns>
  123. public static bool CDataToXmlFile(this DataTable dt, string xmlFilePath)
  124. {
  125. if ((dt != null) && (!string.IsNullOrEmpty(xmlFilePath)))
  126. {
  127. var xDoc = new XmlDocument {InnerXml = CDataToXml(dt)};
  128. xDoc.Save(xmlFilePath);
  129. return true;
  130. }
  131. return false;
  132. }
  133. /**//// <summary>
  134. /// 将DataSet对象中指定的Table转换成XML文件
  135. /// </summary>
  136. /// <param name="ds">DataSet对象</param>
  137. /// <param name="tableIndex">DataSet对象中的Table索引</param>
  138. /// <param name="xmlFilePath">xml文件路径</param>
  139. /// <returns>bool]值</returns>
  140. public static bool CDataToXmlFile(DataSet ds, int tableIndex, string xmlFilePath)
  141. {
  142. if (tableIndex != -1)
  143. {
  144. return CDataToXmlFile(ds.Tables[tableIndex], xmlFilePath);
  145. }
  146. return CDataToXmlFile(ds.Tables[0], xmlFilePath);
  147. }
  148. /**//// <summary>
  149. /// 将DataSet对象转换成XML文件
  150. /// </summary>
  151. /// <param name="ds">DataSet对象</param>
  152. /// <param name="xmlFilePath">xml文件路径</param>
  153. /// <returns>bool]值</returns>
  154. public static bool CDataToXmlFile(DataSet ds, string xmlFilePath)
  155. {
  156. return CDataToXmlFile(ds, -1, xmlFilePath);
  157. }
  158. /**//// <summary>
  159. /// 将DataView对象转换成XML文件
  160. /// </summary>
  161. /// <param name="dv">DataView对象</param>
  162. /// <param name="xmlFilePath">xml文件路径</param>
  163. /// <returns>bool]值</returns>
  164. public static bool CDataToXmlFile(DataView dv, string xmlFilePath)
  165. {
  166. return CDataToXmlFile(dv.Table, xmlFilePath);
  167. }
  168. }
  169. }