- 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();
- }
|