0

我有一个 xml,我想为 xml 文件中的每个元素附加一个属性。

IEnumerable<XElement> childList = from el in xml.Elements()
                                  select el;

textBox1.Text = childList.ToString();

foreach (XElement el in childList)
{
    el.Add(new XAttribute("Liczba_Potomkow", "dziesiec"));
    textBox1.Text = el.ToString();
    xml.Save("Employees.xml");
}

不幸的是,当我打开文件时,似乎只有第一行受到影响。(只有第一个元素获得新属性)。为什么会这样?

4

1 回答 1

1

我假设xml是一个XDocument?如果是这样,您将Elements()直接调用根元素的元素 - 因此它找到的唯一元素将是根元素本身。

如果你想对文档中的所有元素做一些事情,你应该使用Descendants()方法。

此外,您的查询表达式毫无意义-您不妨只使用xml.Elements()-而且我真的不认为您应该在循环中保存。

我想你只是想要:

foreach (var element in xml.Descendants())
{
    element.Add(new XAttribute("Liczba_Potomkow", "dziesiec"));
}
xml.Save("Employees.xml");
于 2013-01-14T15:19:43.340 回答