Это должно сработать:
foreach (XmlElement el in xDoc.SelectNodes("//img")) {
// Replace image element with an 'a' element that wraps it
var aElement = xDoc.CreateElement("a");
aElement.SetAttribute("href", "http://example.com");
aElement.SetAttribute("onclick", "alert('Maple syrup!');");
aElement.AppendChild(el.Clone());
el.ParentNode.ReplaceChild(aElement, el);
}
Обратите внимание, что тип, который я использовал в цикле, равен XmlElement
вместо XmlNode
(поскольку все img
элементы должны быть ... элементами, и это позволяет нам делать больше, чем просто базовый XmlNode
класс позволяет).
Вы также можете захотеть взглянуть на LINQ-to-XML , что делает создание XML гораздо менее раздражающим: -)