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 回答