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 に答える