【问题标题】:how to edit a XML file in edit mode in C#如何在 C# 中以编辑模式编辑 XML 文件
【发布时间】:2018-01-01 17:43:34
【问题描述】:

我正在尝试使用 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 为基础打开网格中的数据时,我能够在单个元素上进行更新

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

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

代码如下:

 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# 中的更新按钮时在编辑模式下更新 , 和 cmets。

【问题讨论】:

    标签: c# asp.net .net xml


    【解决方案1】:

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

    如果没记错的话,应该是这样的

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

    【讨论】:

      【解决方案2】:

      你为什么不使用循环来一一更新它们。

      将所有隐藏字段值放入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);
      }
      

      【讨论】:

        【解决方案3】:

        在 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;
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2023-03-11
          • 2011-05-14
          • 2013-09-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-04-05
          相关资源
          最近更新 更多