C#XML一次删除更多行,但属性值可以更改
我们必须用C#(windows窗体)编写一个代码,将XML文件加载到richtextbox中。 作品
这就是文本字段的样子:
0 264 48 false
这是我们要删除它的一部分或将值从false
设置为true
(您选择的更容易):
false
这部分代码可以在每个文本字段中找到,但属性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是我的姓名缩写)
我们希望有人可以通过告诉错误的含义来帮助我们,或者通过提供有效的代码来帮助我们。
我希望你在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");
该错误意味着已经在lambda表达式之外声明了变量e
。
我遇到的问题是它在加载时无法找到该文件。 确保bin中的文件 – > debug。 你不能以某种方式加载任何路径。