c# - 将更改后的元素保存回 XML 文件

标签 c# linq

我的 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>

使用 LINQ 获取值并显示文本框中的所有元素,仅显示 VALUE 元素。

var hdd= from n1 in x.Elements("DECLARATION") where 1.Attribute("NAME").Value.Trim() == "1ST_HDD_SATA_Position" select n1.Elements("INSTANCE").Elements("PROPERTY").Elements("INDEX").Elements("VALUE"); 

然后更新了文本框以包含 VALUE 元素的新值。例如,假设我将其更新为某个字符串。

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

    el.ReplaceNodes("string");
    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>

然后下面的代码就可以工作了:

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");

关于c# - 将更改后的元素保存回 XML 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10627959/

相关文章:

c# - 解析 C# 日期时间

c# - 创建用于测试 Windows.Web.Http.HttpClient 的模拟 IHttpFilter

c# - 计算连续相等字符的数量

c# - 通过传递 .config 文件的路径将键/值对读取到字典中 c#

c# - 重命名正在运行的可执行 (exe) 文件

c# - 在线程中设置类的字段

c# - 对对象数组执行 linq 查询?

c# - LINQ 获取全局索引

c# - Linq 中 GroupBy 的案例条件用于重复记录

c# - 通过服务器从 MySQL 数据库检索图像