我已加载的XmlDocument到内存中,创建新的XmlElement。现在,我想的XmlElement添加到路径/报告/节/主机,但我不知道怎么办。我可以添加它轻松以下XML的根节点,但我想不通我怎么能在XML浏览更深的层次,只是追加那里。在伪我试图做到这一点:

doc.SelectNodes( “/报告/部分/主机”)的appendChild(子根);

代码:

        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");
有帮助吗?

解决方案

尝试的SelectSingleNode代替的SelectNodes

XmlElement parent = (XmlElement)doc.SelectSingleNode("/report/section/hosts")
parent.AppendChild(subRoot);

其他提示

您几乎没有。尝试使用的SelectSingleNode代替:

XmlNode node = doc.SelectSingleNode("/report/section/hosts");
node.AppendChild(subRoot);

在SelectNodes方法返回节点的列表。 您应该使用的SelectSingleNode,而不是...

e.g。 (我的头顶部,在Visual Studio中没有测试)结果

doc.SelectSingleNode("/report/section/hosts").AppendChild(subRoot);

您需要得到您的文档到的XmlElement参考(根以外)追加到。有使用上XmlDocument的这样一些方法作为GetElementByIdSelectSingleNode它以不同的方式为你做这个研究的味道。

这是说,在这方面整个API被普遍认为是一个有点痛苦,你有LINQ提供?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top