我有一个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");
}
不幸的是,当我打开文件时,第一行似乎受到了影响。 (只有第一个元素获得新属性)。为什么会这样?
答案 0 :(得分:1)
我认为xml
是XDocument
?如果是这样,您直接在根元素的父上调用Elements()
- 因此它找到的唯一元素将是根元素本身。
如果您想为文档中的所有元素执行某些操作,则应使用Descendants()
方法。
此外,您的查询表达式毫无意义 - 您可能只使用xml.Elements()
- 我真的不认为您应该保存在循环中。
我想你只是想:
foreach (var element in xml.Descendants())
{
element.Add(new XAttribute("Liczba_Potomkow", "dziesiec"));
}
xml.Save("Employees.xml");