将xml文档保存到DataTable中

时间:2013-03-13 22:56:11

标签: c# asp.net datatable

我有一个asp.net页面,其中我使用c#读取xml文档并将每个条目添加到列表视图中。

然后我有一个功能让用户在列表视图中添加一个新条目,但我无法弄清楚如何将它保存在按钮事件中。

这是我加载文档的原因。

protected void Button6_Click(object sender, EventArgs e)
         {
             XmlDocument xmlDocument = new XmlDocument();
        using (DataTable tabListView1 = new DataTable())
        {
            tabListView1.Columns.Add("value", Type.GetType("System.String"));
            xmlDocument.Load(AppDomain.CurrentDomain.BaseDirectory + "/XmlFile/ListView1.xml");
            XmlNodeList xmlNodeList = xmlDocument.SelectNodes("root/data[@open='1']");
            foreach (XmlNode xmlNode in xmlNodeList)
            {
                DataRow dr = tabListView1.NewRow();
                dr["value"] = xmlNode.InnerText;
                tabListView1.Rows.Add(dr);
            }
            ListView1.DataSource = tabListView1;
            ListView1.DataBind();
        }
        TextBox3.Text = "Microsoft";

    }

如何将更改保存回ListView1.xml?谢谢!

1 个答案:

答案 0 :(得分:0)

假设你可以从你正在管理的控件中将数据源作为DataTable返回,这应该会有所帮助。

private static void SaveXml(string pathAndFileName, DataTable source)
{
XmlDocument xmlDoc = new XmlDocument();
var root = xmlDoc.CreateElement("root");
xmlDoc.AppendChild(root);

     foreach (DataRow row in source.Rows)  
     {
        var dataElement = xmlDoc.CreateElement("data");
        var openAttribute = xmlDoc.CreateAttribute("open");
        openAttribute.Value = "1";
        dataElement.Attributes.Append(openAttribute);
        dataElement.InnerText = row["value"].ToString();
        root.AppendChild(dataElement);
     }
     xmlDoc.Save(pathAndFileName);
  }

foreach (DataRow row in source.Rows) { var dataElement = xmlDoc.CreateElement("data"); var openAttribute = xmlDoc.CreateAttribute("open"); openAttribute.Value = "1"; dataElement.Attributes.Append(openAttribute); dataElement.InnerText = row["value"].ToString(); root.AppendChild(dataElement); } xmlDoc.Save(pathAndFileName); }