XML에서 더 깊이 탐색하고 데이터를 추가하려면 어떻게해야합니까?
-
23-08-2019 - |
문제
xmldocument를 메모리에로드하고 새로운 xmlelement를 만들었습니다. 이제 경로/보고서/섹션/호스트에 xmlelement를 추가하려고하지만 방법을 모르겠습니다. XML의 루트 노드 아래에 쉽게 추가 할 수 있지만 XML에서 더 깊은 레벨을 탐색하고 거기에 추가 할 수있는 방법을 알 수는 없습니다. 의사에서 나는 이것을 시도하고있다 :
Doc.SelectNodes ( "/report/section/hosts"). AppendChild (subroot);
코드:
XmlDocument doc = new XmlDocument();
doc.Load("c:\\data.xml");
//host
XmlElement subRoot = doc.CreateElement("host");
//Name
XmlElement ElName = doc.CreateElement("name");
XmlText TxtName = doc.CreateTextNode("text text");
ElName.AppendChild(TxtName);
subRoot.AppendChild(ElName);
doc.DocumentElement.AppendChild(subRoot);
doc.Save("c:\\data.xml");
해결책
SelectNodes 대신 SelectSingLenode를 사용해보십시오
XmlElement parent = (XmlElement)doc.SelectSingleNode("/report/section/hosts")
parent.AppendChild(subRoot);
다른 팁
당신은 거의 거기에 있습니다. 대신 SelectSingLenode를 사용해보십시오.
XmlNode node = doc.SelectSingleNode("/report/section/hosts");
node.AppendChild(subRoot);
SelectNodes 메소드는 노드 목록을 반환합니다. 대신 selectsinglenode를 사용해야합니다 ...
EG (내 머리 꼭대기, Visual Studio에서 테스트하지 않았습니다)
doc.SelectSingleNode("/report/section/hosts").AppendChild(subRoot);
문서 (루트 제외)의 XmlElement에 대한 참조를 받아야합니다. 거기 있습니다 많은 방법 XMLDocument에서 사용할 수 있습니다 GetElementById
그리고 SelectSingleNode
다른 방식으로 당신을 위해 이것을 수행하고, 맛을위한 연구.
즉,이 영역의 전체 API는 일반적으로 약간 고통스러운 것으로 간주됩니다. LINQ를 사용할 수 있습니까?
제휴하지 않습니다 StackOverflow