C#XML一次删除更多行,但属性值可能会更改
本文关键字:属性 一次 C#XML 删除 | 更新日期: 2023-09-27 18:29:47
我们必须用C#(windows形式)编写一段代码,将XML文件加载到richtextbox中。作品
这就是文本字段的样子:
<Hmi.Screen.TextField Name="Text Field_1" AggregationName="ScreenItems" ID="31">
<ObjectList>
<Hmi.Screen.Property Name="Layer" AggregationName="Properties" ID="77">
<AttributeList>
<Value>0</Value>
</AttributeList>
</Hmi.Screen.Property>
<Hmi.Screen.Property Name="Left" AggregationName="Properties" ID="78">
<AttributeList>
<Value>264</Value>
</AttributeList>
</Hmi.Screen.Property>
<Hmi.Screen.Property Name="Top" AggregationName="Properties" ID="79">
<AttributeList>
<Value>48</Value>
</AttributeList>
</Hmi.Screen.Property>
<Hmi.Screen.Property Name="FitToLargest" AggregationName="Properties" ID="84">
<AttributeList>
<Value>false</Value>
</AttributeList>
</Hmi.Screen.Property>
</ObjectList>
</Hmi.Screen.TextField>
这是我们想要删除的部分,或者将值从false
设置为true
(您可以选择更容易的):
<Hmi.Screen.Property Name="FitToLargest" AggregationName="Properties" ID="84">
<AttributeList>
<Value>false</Value>
</AttributeList>
</Hmi.Screen.Property>
这部分代码在每个文本字段中都可以找到,但属性ID的值不同。我们希望为每个文本字段删除它。
我们已经有了这个:
XDocument xml = XDocument.Load(loadLocation);
xml.Descendants().Elements("Hmi.Screen.Property")
.Where(e => e.Attribute("Name=").Value == "FitToLargest")
.Remove();
xml.Save(loadLocation);
我们在stackoverflow上找到了它,但它给出了这个错误:
Error 1 A local variable named 'e' cannot be declared in this scope because it would give a different meaning to 'e', which is already used in a 'parent or current' scope to denote something else C:'Users'*****'*****'*****'Projects'Converter'Converter'Form1.cs 211 37 Converter
我们可以通过将e
更改为例如eJbou
(Jbou是我的首字母缩写)来消除错误
我们希望有人能告诉我们错误的含义来帮助我们,或者给我们一个有效的代码来帮助我们。
该错误表示lambda表达式外部已经声明了一个变量e
。
我希望你在Page_Load
上这样做所以请检查这个
protected void Page_Load(object sender, EventArgs e)
{
e
包含事件数据因此,如果你在任何事件中使用它,那么你必须用x
之类的东西来替换你的e
,比如
XDocument xml = XDocument.Load(loadLocation);
xml.Descendants().Elements("Hmi.Screen.Property")
.Where(x=> x.Attribute("Name").Value == "FitToLargest")
.Remove();
xml.Save(loadLocation);
试试这个
XDocument delete = XDocument.Load(@"D:'xxx'Delete.xml");
delete.Descendants("Hmi.Screen.Property").Where(
x => (string)x.Attribute("Name") == "FitToLargest").Remove();
//e => e.Attribute("Name").Value == "FitToLargest").Remove();
delete.Save(@"D:'xxxt'xxxx'Delete.xml");
我遇到的问题是加载文件时找不到文件。请确保文件在您的bin->调试中。你不能以某种方式加载任何路径。