如何在C#中以编辑模式编辑XML文件

时间:2017-07-26 11:58:13

标签: c# asp.net .net xml

我正在尝试使用xml在编辑模式下更新我的网格,但我无法做到。

我只能编辑一个元素,但不知道如何编辑多个

我的xml文件如下所示

<CATALOG>
  <CD>
    <ID>1</ID>
    <Application>Dot Net</Application>
    <status>Available</status>
    <LastUpdate>02-07-2017</LastUpdate>
    <Comments>The Rox for July has been loaded</Comments>
  </CD>
  <CD>
    <ID>2</ID>
    <Application>JFORWBK</Application>
    <status>Available</status>
    <LastUpdate>05-07-2017</LastUpdate>
    <Comments>DeLorean data has been loaded</Comments>
  </CD>
  <CD>
    <ID>3</ID>
    <Application>Codepress</Application>
    <status>Open for Input</status>
    <LastUpdate>06-07-2017</LastUpdate>
    <Comments>The Rox for July has been loaded</Comments>
  </CD>
</catalog>

当我在编辑模式的基础上打开网格中的数据而不是我能够在单个元素上更新

如果我在隐藏字段中有值,我怎么能一次更新所有元素。

我可以根据id更新我的xml元素。我只能在一次更新一个元素..

代码如下:

 ID = Request.QueryString["sID"];
                    XmlDocument xmlDoc = new XmlDocument();
                    string filepathsUpdate = Server.MapPath("Action.xml");
                    xmlDoc.Load(filepathsUpdate);
                    XmlNode node = xmlDoc.SelectSingleNode("/CATALOG/CD[ID=" + ID + "]/Action");
                    node.InnerText = ssplit[0];
                    xmlDoc.Save(filepathsUpdate);

现在如何在服务器端单击C#中的更新按钮时更新,以及编辑模式中的注释。

3 个答案:

答案 0 :(得分:1)

为什么不使用循环来逐个更新它们。

将所有隐藏字段值放在Ids列表中。然后使用循环来更新XML。

List<int> Ids = new List<int>();
Ids.Add(1);

for (int i = 0; i < Ids.Count; i++)
{
    ID = Request.QueryString["sID"];
    XmlDocument xmlDoc = new XmlDocument();
    string filepathsUpdate = Server.MapPath("Action.xml");
    xmlDoc.Load(filepathsUpdate);
    XmlNode node = xmlDoc.SelectSingleNode("/CATALOG/CD[ID=" + Ids[i].ToString() + "]/Action");
    node.InnerText = ssplit[0];
    xmlDoc.Save(filepathsUpdate);
}

答案 1 :(得分:1)

在LINQ to XML中,它非常简单:

var id = Request.QueryString["sID"];
XDocument doc = XDocument.Load("Action.xml");
var catalogDescendants = doc.Descendants("CATALOG");
foreach (var cd in catalogDescendants)
{
    //you can update the id here for whatever you want
    cd.Element("ID").Value = id;
}

答案 2 :(得分:0)

您可以使用XmlNodeList并对该列表中的每个XmlNode进行迭代并执行更新。

如果记忆有效,它应该是

foreach(XmlNode node in XmlDoc.selectNodes("nodename")){node.innerText = "updated value here";}