C# 使用已更改的元素保存回XML文件
我的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">
<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");