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(xmlFilePath); 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;
}
}
这是转的代码
{
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(xmlFilePath); 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;
}
}
这是转的代码
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
namespace Test2
{
class Program
{
static void Main(string[] args)
{
//1.将DataTable写入Xml
List<Person> list = new List<Person> {
new Person(){Id=1,Name="小明"},
new Person(){Id=2,Name="小华"}
};
DataTable dt = new DataTable("MatrixInfo");
DataColumn dc1 = new DataColumn("ID");
DataColumn dc2 = new DataColumn("Name");
dt.Columns.Add(dc1);
dt.Columns.Add(dc2);
foreach(Person p in list){
DataRow dr = dt.NewRow();
dr["ID"] = p.Id;
dr["Name"] = p.Name;
dt.Rows.Add(dr);
}
System.IO.StringWriter writer = new System.IO.StringWriter();
dt.WriteXml(writer);
string xmlstr= writer.ToString();
writer.Close();
Console.WriteLine(xmlstr);
//2.将Xml读入DataTable, 切记MatrixInfo,ID,Name. 即表名, 列名要一一对应
DataTable dtStep2 = new DataTable("MatrixInfo");
DataColumn dc1Step2 = new DataColumn("ID");
DataColumn dc2Step2 = new DataColumn("Name");
dtStep2.Columns.Add(dc1Step2);
dtStep2.Columns.Add(dc2Step2);
System.IO.StringReader reader = new System.IO.StringReader(xmlstr);
dtStep2.ReadXml(reader);
Console.WriteLine("测试转换结果:");
foreach (DataRow drS2 in dtStep2.Rows) {
Console.WriteLine(drS2[0]+"/t"+drS2[1]);
}
Console.ReadLine();
}
}
public class Person {
public int Id { get; set; }
public string Name { get; set; }
}
}