XmlToData.cs 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. using System;
  2. using System.Data;
  3. using System.IO;
  4. using System.Web;
  5. using System.Xml;
  6. using IwbZero.ToolCommon.LogHelpers;
  7. namespace IwbZero.ToolCommon.FileHelpers
  8. {
  9. /// <summary>
  10. /// XML形式的字符串、XML文江转换成DataSet、DataTable格式
  11. /// </summary>
  12. public static class XmlToData
  13. {
  14. /**//// <summary>
  15. /// 将Xml内容字符串转换成DataSet对象
  16. /// </summary>
  17. /// <param name="xmlStr">Xml内容字符串</param>
  18. /// <returns>DataSet对象</returns>
  19. public static DataSet CXmlToDataSet(this string xmlStr)
  20. {
  21. if (!string.IsNullOrEmpty(xmlStr))
  22. {
  23. StringReader StrStream = null;
  24. XmlTextReader Xmlns = null;
  25. try
  26. {
  27. DataSet ds = new DataSet();
  28. //读取字符串中的信息
  29. StrStream = new StringReader(xmlStr);
  30. //获取StrStream中的数据
  31. Xmlns = new XmlTextReader(StrStream);
  32. //ds获取Xmlns中的数据
  33. ds.ReadXml(Xmlns);
  34. return ds;
  35. }
  36. catch (Exception e)
  37. {
  38. typeof(XmlToData).LogError(e);
  39. }
  40. finally
  41. {
  42. //释放资源
  43. if (Xmlns != null)
  44. {
  45. Xmlns.Close();
  46. StrStream.Close();
  47. StrStream.Dispose();
  48. }
  49. }
  50. }
  51. return null;
  52. }
  53. /**//// <summary>
  54. /// 将Xml字符串转换成DataTable对象
  55. /// </summary>
  56. /// <param name="xmlStr">Xml字符串</param>
  57. /// <param name="tableIndex">Table表索引</param>
  58. /// <returns>DataTable对象</returns>
  59. public static DataTable CXmlToDataTable(this string xmlStr, int tableIndex)
  60. {
  61. return CXmlToDataSet(xmlStr).Tables[tableIndex];
  62. }
  63. /**//// <summary>
  64. /// 将Xml字符串转换成DataTable对象
  65. /// </summary>
  66. /// <param name="xmlStr">Xml字符串</param>
  67. /// <returns>DataTable对象</returns>
  68. public static DataTable CXmlToDataTable(this string xmlStr)
  69. {
  70. return CXmlToDataSet(xmlStr).Tables[0];
  71. }
  72. /**//// <summary>
  73. /// 读取Xml文件信息,并转换成DataSet对象
  74. /// </summary>
  75. /// <remarks>
  76. /// DataSet ds = new DataSet();
  77. /// ds = CXmlFileToDataSet("/XML/upload.xml");
  78. /// </remarks>
  79. /// <param name="xmlFilePath">Xml文件地址</param>
  80. /// <returns>DataSet对象</returns>
  81. public static DataSet CXmlFileToDataSet(this string xmlFilePath)
  82. {
  83. if (!string.IsNullOrEmpty(xmlFilePath))
  84. {
  85. string path = HttpContext.Current.Server.MapPath(xmlFilePath);
  86. StringReader StrStream = null;
  87. XmlTextReader Xmlns = null;
  88. try
  89. {
  90. XmlDocument xmlDoc = new XmlDocument();
  91. //根据地址加载Xml文件
  92. xmlDoc.Load(path);
  93. DataSet ds = new DataSet();
  94. //读取文件中的字符流
  95. StrStream = new StringReader(xmlDoc.InnerXml);
  96. //获取StrStream中的数据
  97. Xmlns = new XmlTextReader(StrStream);
  98. //ds获取Xmlns中的数据
  99. ds.ReadXml(Xmlns);
  100. return ds;
  101. }
  102. catch (Exception e)
  103. {
  104. typeof(XmlToData).LogError(e);
  105. }
  106. finally
  107. {
  108. //释放资源
  109. if (Xmlns != null)
  110. {
  111. Xmlns.Close();
  112. StrStream.Close();
  113. StrStream.Dispose();
  114. }
  115. }
  116. }
  117. return null;
  118. }
  119. /**//// <summary>
  120. /// 读取Xml文件信息,并转换成DataTable对象
  121. /// </summary>
  122. /// <param name="xmlFilePath">xml文江路径</param>
  123. /// <param name="tableIndex">Table索引</param>
  124. /// <returns>DataTable对象</returns>
  125. public static DataTable CXmlFileToDataTable(this string xmlFilePath, int tableIndex)
  126. {
  127. return CXmlFileToDataSet(xmlFilePath).Tables[tableIndex];
  128. }
  129. /**//// <summary>
  130. /// 读取Xml文件信息,并转换成DataTable对象
  131. /// </summary>
  132. /// <param name="xmlFilePath">xml文江路径</param>
  133. /// <returns>DataTable对象</returns>
  134. public static DataTable CXmlFileToDataTable(this string xmlFilePath)
  135. {
  136. return CXmlFileToDataSet(xmlFilePath).Tables[0];
  137. }
  138. }
  139. }