Боюсь, что нет идеального способа добавить XmlElement
в XmlNodeList
.
Я посмотрел на источники абстрактного класса XmlNodeList
и его внутренних потомков: XmlElementList
, XmlChildNodes
и XPathNodeList
. Нет методов Add
.
Существует еще один потомок XmlNodeList
: CanonicalXmlNodeList
. Он реализует IList
и содержит метод Add
. Но это не поможет, потому что метод SelectNodes
возвращает экземпляр XPathNodeList
.
Экземпляр XPathNodeList
класса (возвращение метода SelectNodes
) имеет частное поле List<XmlNode> list
, вы могли бы использовать отражение для доступа к нему:
var nodeList = xml.SelectNodes("/");
int dummy = nodeList.Count; // IMPORTANT! Fills the private list when called
Assembly asm = typeof(XmlDocument).Assembly;
var t = asm.GetType("System.Xml.XPathNodeList");
var listField = t.GetField("list", BindingFlags.NonPublic | BindingFlags.Instance);
List<XmlNode> list = (List<XmlNode>)listField.GetValue(nodeList);
list.Add(...); // <- the goal!