class test

...{
public static DataTable GetDataTable(string xmlStr)

...{
XmlDocument doc = new XmlDocument();
doc.LoadXml(xmlStr);
XmlNodeList xlist = doc.SelectNodes("//DataTable/Rows");
DataTable Dt = new DataTable();
DataRow Dr;
for (int i = 0; i < xlist.Count; i++)

...{
Dr = Dt.NewRow();
XmlElement xe = (XmlElement)xlist.Item(i);
for (int j = 0; j < xe.Attributes.Count; j++)

...{
if (!Dt.Columns.Contains("@" + xe.Attributes[j].Name))
Dt.Columns.Add("@" + xe.Attributes[j].Name);
Dr["@" + xe.Attributes[j].Name] = xe.Attributes[j].Value;
}
for (int j = 0; j < xe.ChildNodes.Count; j++)

...{
if (!Dt.Columns.Contains(xe.ChildNodes.Item(j).Name))
Dt.Columns.Add(xe.ChildNodes.Item(j).Name);
Dr[xe.ChildNodes.Item(j).Name] = xe.ChildNodes.Item(j).InnerText;
}
Dt.Rows.Add(Dr);
}
return Dt;
}
public static string GetXml(DataTable dt)

...{
string strXml = @"<?xml version='1.0' encoding='UTF-8' ?><DataTable />";
XmlDocument doc = new XmlDocument();
doc.LoadXml(strXml);
XmlNode root = doc.SelectSingleNode("//DataTable");
// 创建子节点
for (int j = 0; j < dt.Rows.Count; j++)

...{
XmlElement xe = doc.CreateElement("Rows");
XmlElement xeChild = null;
if (!Object.Equals(dt, null))

...{
for (int i = 0; i < dt.Columns.Count; i++)

...{
if (dt.Columns[i].ColumnName.StartsWith("@"))

...{
string AttributeName = dt.Columns[i].ColumnName.Replace("@", "");
// 为该子节点设置属性
xe.SetAttribute(AttributeName, dt.Rows[j][i].ToString());
}
else

...{
xeChild = doc.CreateElement(dt.Columns[i].ColumnName);
try

...{
xeChild.InnerXml = dt.Rows[j][i].ToString();
}
catch

...{
xeChild.InnerText = dt.Rows[j][i].ToString();
}
xe.AppendChild(xeChild);
}
}
}
// 保存子节点设置
root.AppendChild(xe);
}
return doc.InnerXml.ToString();
}
}
//调用

DataTable dt =
new DataTable(
"DataTable");

DataColumn dc1 =
new DataColumn(
"merCode", Type.GetType(
"System.String"));

DataColumn dc2 =
new DataColumn(
"crCode", Type.GetType(
"System.String"));

DataColumn dc3 =
new DataColumn(
"startDate", Type.GetType(
"System.String"));

DataColumn dc4 =
new DataColumn(
"endDate", Type.GetType(
"System.String"));

DataColumn dc5 =
new DataColumn(
"hkID", Type.GetType(
"System.String"));

DataColumn dc6 =
new DataColumn(
"printNo", Type.GetType(
"System.String"));

DataColumn dc7 =
new DataColumn(
"LogInfo", Type.GetType(
"System.String"));

dt.Columns.Add(dc1);

dt.Columns.Add(dc2);

dt.Columns.Add(dc3);

dt.Columns.Add(dc4);

dt.Columns.Add(dc5);

dt.Columns.Add(dc6);

dt.Columns.Add(dc7);

DataRow dr = dt.NewRow();

dr[
"merCode"] =
"1";

dr[
"crCode"] =
"1";

dr[
"endDate"] =
"1";

dt.Rows.Add(dr);

dr = dt.NewRow();

dr[
"merCode"] =
"2";

dr[
"crCode"] =
"2";

dr[
"endDate"] =
"2";

dt.Rows.Add(dr);

Console.WriteLine(test.GetXml(dt));

Console.WriteLine("");

DataTable dts = test.GetDataTable(test.GetXml(dt));
for (
int i = 0; i < dts.Rows.Count; i++)

...{
string str = string.Empty;
for (int j = 0; j < dts.Columns.Count; j++)

...{
str += dts.Rows[i][j].ToString();
}
Console.WriteLine(str);
}

Console.ReadLine();