java dataset xml_XML与DataSet的相互转换

1 //XmlDatasetConvert.cs

2

3 using System;

4 using System.Collections.Generic;

5 using System.Text;

6 using System.Data;

7 using System.IO;

8 using System.Xml;

9

10 namespace XmlDesign

11 {

12 class XmlDatasetConvert

13 {

14 //将xml对象内容字符串转换为DataSet

15 public static DataSet ConvertXMLToDataSet(string xmlData)

16 {

17 StringReader stream = null;

18 XmlTextReader reader = null;

19 try

20 {

21 DataSet xmlDS = new DataSet();

22 stream = new StringReader(xmlData);

23 //从stream装载到XmlTextReader

24 reader = new XmlTextReader(stream);

25 xmlDS.ReadXml(reader);

26 return xmlDS;

27 }

28 catch (System.Exception ex)

29 {

30 throw ex;

31 }

32 finally

33 {

34 if (reader != null) reader.Close();

35 }

36 }

37

38 //将xml文件转换为DataSet

39 public static DataSet ConvertXMLFileToDataSet(string xmlFile)

40 {

41 StringReader stream = null;

42 XmlTextReader reader = null;

43 try

44 {

45 XmlDocument xmld = new XmlDocument();

46 xmld.Load(xmlFile);

47

48 DataSet xmlDS = new DataSet();

49 stream = new StringReader(xmld.InnerXml);

50 //从stream装载到XmlTextReader

51 reader = new XmlTextReader(stream);

52 xmlDS.ReadXml(reader);

53 //xmlDS.ReadXml(xmlFile);

54 return xmlDS;

55 }

56 catch (System.Exception ex)

57 {

58 throw ex;

59 }

60 finally

61 {

62 if (reader != null) reader.Close();

63 }

64 }

65

66 //将DataSet转换为xml对象字符串

67 public static string ConvertDataSetToXML(DataSet xmlDS)

68 {

69 MemoryStream stream = null;

70 XmlTextWriter writer = null;

71

72 try

73 {

74 stream = new MemoryStream();

75 //从stream装载到XmlTextReader

76 writer = new XmlTextWriter(stream, Encoding.Unicode);

77

78 //用WriteXml方法写入文件.

79 xmlDS.WriteXml(writer);

80 int count = (int)stream.Length;

81 byte[] arr = new byte[count];

82 stream.Seek(0, SeekOrigin.Begin);

83 stream.Read(arr, 0, count);

84

85 UnicodeEncoding utf = new UnicodeEncoding();

86 return utf.GetString(arr).Trim();

87 }

88 catch (System.Exception ex)

89 {

90 throw ex;

91 }

92 finally

93 {

94 if (writer != null) writer.Close();

95 }

96 }

97

98 //将DataSet转换为xml文件

99 public static void ConvertDataSetToXMLFile(DataSet xmlDS,string xmlFile)

100 {

101 MemoryStream stream = null;

102 XmlTextWriter writer = null;

103

104 try

105 {

106 stream = new MemoryStream();

107 //从stream装载到XmlTextReader

108 writer = new XmlTextWriter(stream, Encoding.Unicode);

109

110 //用WriteXml方法写入文件.

111 xmlDS.WriteXml(writer);

112 int count = (int)stream.Length;

113 byte[] arr = new byte[count];

114 stream.Seek(0, SeekOrigin.Begin);

115 stream.Read(arr, 0, count);

116

117 //返回Unicode编码的文本

118 UnicodeEncoding utf = new UnicodeEncoding();

119 StreamWriter sw = new StreamWriter(xmlFile);

120 sw.WriteLine("<?xml version=\"1.0\" encoding=\"utf-8\"?>");

121 sw.WriteLine(utf.GetString(arr).Trim());

122 sw.Close();

123 }

124 catch( System.Exception ex )

125 {

126 throw ex;

127 }

128 finally

129 {

130 if (writer != null) writer.Close();

131 }

132 }

133

134 }

135 }

136 //使用示例

137

138 using System;

139 using System.Collections.Generic;

140 using System.Text;

141 using System.Xml;

142 using System.Data;

143

144 namespace XmlDesign

145 {

146 class Program

147 {

148 static void Main(string[] args)

149 {

150 DataSet ds = new DataSet();

151

152 //转换一个XML文件(本地\网络均可)为一个DataSet

153 #region 转换一个XML文件(本地\网络均可)为一个DataSet

154 //http://news.baidu.com/n?cmd=1&class=sportnews&tn=rss

155 //F:\study\001CSharp_Study\002Source\XmlDesign\XmlDesign\Save_Plan.xml

156 ds = XmlDatasetConvert.ConvertXMLFileToDataSet(@"c:\\adadsda1.xml");

157 Console.WriteLine("数据集名为\"{0}\",包含{1}个表", ds.DataSetName, ds.Tables.Count);

158 foreach(DataTable dt in ds.Tables)

159 {

160 PrintTableName(dt.TableName);

161 };

162 #endregion

163

164 //构造一个DataSet,并转换为XML字符串

165 #region 构造一个DataSet,并转换为XML字符串

166 DataSet ds1 = new DataSet();

167 DataTable dt1 = new DataTable();

168 dt1.TableName = "test";

169 dt1.Columns.Add("id");

170 dt1.Columns.Add("name");

171 dt1.Rows.Add("i001", "hekui");

172 dt1.Rows.Add("i002", "liyang");

173

174 DataTable dt2 = new DataTable();

175 dt2.TableName = "test1";

176 dt2.Columns.Add("bookid");

177 dt2.Columns.Add("bookname");

178 dt2.Rows.Add("b001", "书本1");

179 dt2.Rows.Add("b002", "书本2");

180

181 ds1.Tables.Add(dt1);

182 ds1.Tables.Add(dt2);

183 ds1.DataSetName = "方案";

184 string xmlOut = XmlDatasetConvert.ConvertDataSetToXML(ds1);

185 #endregion

186

187 //转换一个XML字符串为一个DataSet

188 #region 转换一个XML字符串为一个DataSet

189 DataSet ds2 = new DataSet();

190 ds2 = XmlDatasetConvert.ConvertXMLToDataSet(xmlOut);

191 Console.WriteLine("数据集名为\"{0}\",包含{1}个表", ds2.DataSetName, ds2.Tables.Count);

192 foreach (DataTable dt in ds2.Tables)

193 {

194 PrintTableName(dt.TableName);

195 };

196 #endregion

197

198 //转换一个Dataset为一个XML文件

199 #region 转换一个Dataset为一个XML文件

200 XmlDatasetConvert.ConvertDataSetToXMLFile(ds2, "c:\\adadsda1.xml");

201 #endregion

202

203 Console.ReadLine();

204 }

205

206 private static void PrintTableName(string tableName)

207 {

208 Console.WriteLine(tableName);

209 }

210 }

211 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值