0

XML ドキュメントを作成するサンプル アプリケーションを開発し、ドキュメント化された XML を作成して保存しました。アプリケーションはまだ実行されていますが、その XML ドキュメントを削除し、同じアプリケーションを使用して新しい XML を作成しようとしています。のエラーが発生しました

このドキュメントにはすでに「DocumentElement」ノードがあります

if (File.Exists(AppPath) == false)
{
    root = doc.CreateElement("LicenseDetails");
    
    rootnode = doc.CreateElement("License");
    Login = doc.CreateElement("Login_Name");
    Login.InnerText = "KSC";
    rootnode.AppendChild(Login);
    root.AppendChild(rootnode);
    doc.AppendChild(root);
    doc.Save(AppPath);
}

既存の XML ドキュメントにノードを簡単に追加できますが、やりたいことは、XML が削除された場合、アプリケーションは同じタグで新しい XML を作成する必要があるということです。

4

2 に答える 2

3

問題は、XML を削除しても、使用している doc 要素が以前と同じであることです。したがって、ルート要素を doc 要素に追加しようとすると、例外がスローされます。考えられる解決策は次のとおりです。

例えば:

 XmlDocument doc;
 XmlElement root;
 XmlElement rootnode;
 XmlElement Login;

 if (File.Exists(@"C:\Test.xml") == false)
 {
     doc = new XmlDocument();
     root = doc.CreateElement("LicenseDetails");

     rootnode = doc.CreateElement("License");
     Login = doc.CreateElement("Login_Name");
     Login.InnerText = "KSC";
     rootnode.AppendChild(Login);
     root.AppendChild(rootnode);
     doc.AppendChild(root);

     doc.Save(@"C:\Test.xml");
 }

したがって、このブロックに再び到達すると、問題なく実行されます。

于 2009-08-19T06:51:11.373 に答える
2

DocumentElement プロパティを使用 - Xml ドキュメントのルート要素を返します。

    XmlDocument dom=new XmlDocument();
    dom.Load("file.xml");
    XmlElement ele1=dom.createElement("A");
    XmlElement ele2=dom.createElement("B");
    ele1.AppendChild(ele2);
    dom.DocumentElement.AppendChild(ele1);
    dom.Save("file.xml");
于 2009-08-19T06:38:49.950 に答える