【问题标题】:Recreate the same XML document if the original XML document is deleted如果删除了原始 XML 文档,则重新创建相同的 XML 文档
【发布时间】:2025-12-30 02:20:13
【问题描述】:

我开发了一个示例应用程序来创建 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。

【问题讨论】:

  • 你能把代码分享给我们吗?

标签: c# xml xmldocument


【解决方案1】:

问题是即使您删除了 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");
 }

因此,当您再次到达此块时,它将毫无问题地执行。

【讨论】:

    【解决方案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");
    

    【讨论】: