Боюсь, я не совсем определился, какие именно элементы вы хотите поменять, но, я считаю, XElement.ReplaceWith
- это то, что вы ищете. Вот короткая, но полная программа, которая демонстрирует это:
using System;
using System.Xml.Linq;
class Program
{
static void Main()
{
string xml = @"
<root>
<element1/>
<element2/>
<element3/>
<element4/>
<element5/>
</root>";
XDocument doc = XDocument.Parse(xml);
XElement x = doc.Root.Element("element2");
XElement y = doc.Root.Element("element4");
x.ReplaceWith(y);
y.ReplaceWith(x);
Console.WriteLine(doc);
}
}
Это меняет element2
и element4
.
Обратите внимание, что это работает, потому что первый x.ReplaceWith(y)
фактически создает копию из y
, оставляя оригинал в его существующем местоположении ... готовый для замены на x
.