0

我们必须用 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>

这是我们要删除或将值设置为的部分falsetrue您的选择更容易):

<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 是我的首字母)

我们希望有人可以通过告诉我们错误的含义来帮助我们,或者通过提供有效的代码来帮助我们。

4

3 回答 3

1

该错误意味着已经e在 lambda 表达式之外声明了一个变量。

于 2013-08-30T07:29:53.297 回答
0

我希望你这样做,Page_Load 所以检查一下

protected void Page_Load(object sender, EventArgs e)
    {

e包含事件数据所以如果你在任何事件中使用它,那么你必须e用其他东西替换你的,x比如说,

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");
于 2013-08-30T08:07:28.060 回答
0

我遇到的问题是加载文件时找不到文件。确保文件在您的 bin -> 调试中。你不能以某种方式加载任何路径。

于 2013-09-03T08:04:26.147 回答