2014-09-26 2 views

답변

0

나는 XmlElementXmlNodeList에 추가하는 완벽한 방법이 없기를 바랍니다. XmlElementList, XmlChildNodesXPathNodeList :

나는 추상 클래스 XmlNodeList의 소스와 내부 후손을 검토 한 결과. 메서드가 전혀 Add 없습니다.

XmlNodeList의 다른 하위 항목은 CanonicalXmlNodeList입니다. IList을 구현하며 Add 메서드를 포함합니다. 그러나 SelectNodes 메서드가 XPathNodeList 인스턴스를 반환하기 때문에 도움이되지 않습니다.

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! 
0

당신은 다음 새 요소를 추가 보통 징수로 변환해야합니다 (SelectNodes 방법으로 반환)

XPathNodeList 클래스 인스턴스 당신은 액세스 리플렉션을 사용할 수, 민간 분야 List<XmlNode> list있다 그곳에. 물론 원본 문서에 요소를 추가하지는 않습니다.

using System.Collections.Generic; 

var lst = nodes.Cast<XmlElement>().ToList(); 
lst.Add(elm); 
관련 문제