将string xml文档转化为dataset
- /// <summary>
- /// 将string xml文档转化为dataset
- /// </summary>
- /// <param name="xmlData">传入xml字符串</param>
- /// <returns>返回dataset</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();
- }
- }
一下是测试的数据和说明:
示例一 :
- string xmlStr = @"<result>
- <return value=""1""/> <!-- 生成第1个DataTable -->
- <account value=""JAHN521""/> <!-- 生成第2个DataTable -->
- <password value="" EFF6697FA18E29B7CEAEA78FBC2963F1""/> <!-- 生成第3个DataTable -->
- <state value=""1""/> <!-- 生成第4个DataTable -->
- <signature value=""7373F804A68A82AB2273074231CC8874""/> <!-- 生成第5个DataTable -->
- </result>";
- DataSet ds = ConvertXMLToDataSet(xmlStr);
返回包含5个DataTable的DataSet
第1个DataTable的name为:return
DataTable的存储方式:
value
1
第2个DataTable的 name为:account
DataTable的存储方式:
value
JAHN521
第3个DataTable的name为:snailorder
DataTable的存储方式:
value
EFF6697FA18E29B7CEAEA78FBC2963F1
第4个DataTable的name 为:prop
DataTable的存储方式:
value
1
第5个DataTable的name为:signature
DataTable的存储方式:
value
7373F804A68A82AB2273074231CC8874
示例二:
- xmlStr = @"<result>
- <return value=""1""/> <!-- 生成第1个DataTable -->
- <totalCount value=""6589""/> <!-- 生成第2个DataTable -->
- <serverworld id=""1"" value=""1869""/> <!-- 以下4行生成第3个DataTable -->
- <serverworld id=""2"" value=""1233""/>
- <serverworld id=""3"" value=""1235""/>
- <serverworld id=""4"" value=""2252""/>
- </result>";
- DataSet ds = ConvertXMLToDataSet(xmlStr);
返回包含3个DataTable的DataSet
第1个DataTable的name为:return
DataTable的存储方式:
value
1
第2个DataTable的 name为:totalCount
DataTable的存储方式:
value
6589
第3个DataTable的name为:serverworld
DataTable的存储方式:
id
value
1
1869
2
1233
3
1235
4
2252
示例三:
- xmlStr = @"<result>
- <return value=""1""/><!-- 生成第1个DataTable -->
- <account value=""SNAILTEST""/><!-- 生成第2个DataTable -->
- <snailorder no=""20080802-101-0000000053"" points=""625""><!-- 生成第3个DataTable -->
- <prop code=""412335"" amount=""3""/><!-- 生成第4个DataTable -->
- <prop code=""322089"" amount=""2""/>
- <prop code=""611890"" amount=""6""/>
- </snailorder>
- <snailorder no=""20080802-101-0000000256"" points=""1625"">
- <prop code=""412335"" amount=""10""/>
- <prop code=""611890"" amount=""6""/>
- </snailorder>
- <snailorder no=""20080802-101-0000000789"" points=""1300"">
- <prop code=""412335"" amount=""3""/>
- <prop code=""322089"" amount=""2""/>
- <prop code=""611890"" amount=""6""/>
- <prop code=""678003"" amount=""6""/>
- </snailorder>
- <signature value=""425A14E9C4717CF06DCA26180C2EF7F5""/><!-- 生成第5个DataTable -->
- </result>";
- DataSet ds = ConvertXMLToDataSet(xmlStr);
返回包含5个DataTable的DataSet
第1个DataTable的name为:return
DataTable的存储方式:
value
1
第2个DataTable的 name为:account
DataTable的存储方式:
value
SNAILTEST
第3个DataTable的name为:snailorder
DataTable的存储方式:
snailorder_Id
no
points
0
20080802-101-0000000053
625
1
20080802-101-0000000256
1625
2
20080802-101-0000000789
1300
第4个DataTable的name 为:prop
此为三个 snailorder 节点下的子项的合集,生成的Datatable中字段 snailorder_Id 对应 名字为 snailorder 的Table中的字段 snailorder_Id
DataTable的存储方式:
code
amount
snailorder_Id
412335
3
0
322089
2
0
611890
6
0
412335
10
1
611890
6
1
412335
3
2
322089
2
2
611890
6
2
678003
6
2
第5个DataTable的name为:signature
DataTable的存储方式:
value
425A14E9C4717CF06DCA26180C2EF7F5