문제

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를 사용할 수 있습니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top