1

XmlDocumentをメモリにロードし、新しいXmlElementを作成しました。XmlElementをパス/report/ section / hostsに追加しようとしていますが、方法がわかりません。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");
4

4 に答える 4

3

SelectNodesの代わりにSelectSingleNodeを試してください

XmlElement parent = (XmlElement)doc.SelectSingleNode("/report/section/hosts")
parent.AppendChild(subRoot);
于 2009-02-13T12:31:14.920 に答える
1

SelectNodesメソッドは、ノードのリストを返します。代わりにSelectSingleNodeを使用する必要があります...

例(頭のてっぺん、Visual Studioでテストしていません)

doc.SelectSingleNode("/report/section/hosts").AppendChild(subRoot);
于 2009-02-13T12:31:53.000 に答える
1

もうすぐです。代わりにSelectSingleNodeを使用してみてください。

XmlNode node = doc.SelectSingleNode("/report/section/hosts");
node.AppendChild(subRoot);
于 2009-02-13T12:34:12.013 に答える
0

追加するドキュメント(ルート以外)のXmlElementへの参照を取得する必要があります。XmlDocumentにはGetElementByIdさまざまな方法でSelectSingleNodeこれを実行する方法など、さまざまな方法があります。

とはいえ、この領域のAPI全体は一般的に少し苦痛と見なされていますが、LINQを利用できますか?

于 2009-02-13T12:31:53.860 に答える