C# 使用已更改的元素保存回XML文件

C# 使用已更改的元素保存回XML文件,c#,linq,C#,Linq,我的XML是: <CONFIGURATION NAME="HDD"> <DECLARATION NAME="1ST_HDD_SATA"> <INSTANCE> <PROPERTY NAME="ControllerPosition" CHECKPOSITION="true"> <INDEX> <VALUE>0</VALUE> <VALUE STEP="1">

我的XML是:

<CONFIGURATION NAME="HDD"> 
<DECLARATION NAME="1ST_HDD_SATA">   
 <INSTANCE>     
  <PROPERTY  NAME="ControllerPosition" CHECKPOSITION="true">
   <INDEX>
    <VALUE>0</VALUE>
    <VALUE STEP="1">Std.flg</VALUE>
    <VALUE STEP="2">Sas.flg</VALUE>
    <VALUE STEP="-1">eS.flg</VALUE>`
  <CONFIGURATION NAME="HDD"> 
  <DECLARATION NAME="1ST_HDD_SATA">   
   <INSTANCE>     
   <PROPERTY NAME="ControllerPosition"  CHECKPOSITION="true">      
  <INDEX>         
  <VALUE>0</VALUE>         
  <VALUE STEP="1">Std_Ctrl.flg</VALUE> 
  <VALUE STEP="2">Sas_Card.flg</VALUE>        
  <VALUE STEP="-1">eSAS1.flg</VALUE>
  </INDEX>
  <INDEX>
  <VALUE>0</VALUE>
  </INDEX>
  </PROPERTY>   
 </INSTANCE> 
</DECLARATION> 
</CONFIGURATION>
然后更新文本框以包含VALUE元素的新值。例如,假设我将其更新为某个字符串

 foreach (IEnumerable<XElement> elList in hdd)
  foreach (XElement el in elList)
  {

    el.ReplaceNodes("string");
    el.Save(m);
  }
foreach(硬盘中的IEnumerable elList)
foreach(elList中的XElement el)
{
el.替换节点(“字符串”);
el.Save(m);
}

这不是要在更新时保存我的xml文件吗

您的代码有很多问题,首先是您发布了无效的XML。假设您的XML是这样的:

<CONFIGURATION NAME="HDD">
  <DECLARATION NAME="1ST_HDD_SATA">
    <INSTANCE>
      <PROPERTY  NAME="ControllerPosition" CHECKPOSITION="true">
        <INDEX>
          <VALUE>0</VALUE>
          <VALUE STEP="1">Std.flg</VALUE>
          <VALUE STEP="2">Sas.flg</VALUE>
          <VALUE STEP="-1">eS.flg</VALUE>
        </INDEX>
      </PROPERTY>
    </INSTANCE>
  </DECLARATION>
</CONFIGURATION>

请不要在标题前加上“LINQ to XML-C#”之类的前缀。这就是标签的作用。另外,如果它“不工作”,它会做什么而不工作?请使用System.Xml而不是Linqt。对我来说,它会像SQL一样破坏它的OOP部分
<CONFIGURATION NAME="HDD">
  <DECLARATION NAME="1ST_HDD_SATA">
    <INSTANCE>
      <PROPERTY  NAME="ControllerPosition" CHECKPOSITION="true">
        <INDEX>
          <VALUE>0</VALUE>
          <VALUE STEP="1">Std.flg</VALUE>
          <VALUE STEP="2">Sas.flg</VALUE>
          <VALUE STEP="-1">eS.flg</VALUE>
        </INDEX>
      </PROPERTY>
    </INSTANCE>
  </DECLARATION>
</CONFIGURATION>
var doc = XDocument.Load("Configuration.xml");

var hdd = from n1 in doc.Elements("CONFIGURATION").Elements("DECLARATION")
          let nameAttribute = n1.Attribute("NAME")
          where nameAttribute != null && nameAttribute.Value.Trim() == "1ST_HDD_SATA"
          select n1.Elements("INSTANCE")
                   .Elements("PROPERTY")
                   .Elements("INDEX")
                   .Elements("VALUE");
foreach (var elList in hdd)
    foreach (var el in elList)
    {
        el.ReplaceNodes("string");
    }

doc.Save("Configuration.xml");