XML引用的问题

时间:2015-09-07 02:37:37

标签: c# xml

我正在制作一个网络浏览器,我再一次陷入困境。我目前使用的代码创建了一个XML文档,并使用该文档来保存和引用书签和收藏夹。这是代码:

public static String favXml = "favourites.xml", linksXml = "links.xml";
String settingsXml = "settings.xml", historyXml = "history.xml";
List<String> urls = new List<String>();
XmlDocument settings = new XmlDocument();
String homePage;
CultureInfo currentCulture;

然后用这段代码引用它:

private void addFavourite(String url, string name)
{
    XmlDocument myXml = new XmlDocument();
    XmlElement el = myXml.CreateElement("favorit");
    el.SetAttribute("url", url);
    el.InnerText = name;
    if (!File.Exists(favXml))
    {
        XmlElement root = myXml.CreateElement("favourites");
        myXml.AppendChild(root);
        root.AppendChild(el);
    }
    else
    {
        myXml.Load(favXml);
        myXml.DocumentElement.AppendChild(el);
    }

    myXml.Save(favXml);
}

我对该代码的问题是,每次我发布更新时 - 它都会重置用户&#39;书签。我真的不知道如何解决这个问题。非常感谢任何帮助,任何可以提供帮助的人都会在我的更新日志和最终版本中被提及。我目前有36个预览测试人员,他们都对这个故障感到恼火。

2 个答案:

答案 0 :(得分:0)

代码逻辑没有问题,我建议重构条件句。

if (!File.Exists(favXml))

在应用启动时初始化.xml文件,包括生成根元素。然后private void addFavourite(String url, string name)只向这个xml添加元素。

如果你在多线程中使用这个文件,你最好锁定文件以避免覆盖。

答案 1 :(得分:0)

您应该将所需的XML文件加载到XmlDocument,以便获得更新的XML结果。

private void addFavourite(String url, string name)
{
   XmlDocument myXml = new XmlDocument();       
   if (File.Exists(favXml))
   {         
      myXml.Load(favXml); // load your XML file here          
   }
   else
   {
      XmlElement root = myXml.CreateElement("favourites");
      myXml.AppendChild(root);
   }

    XmlElement el = myXml.CreateElement("favorit");
    el.SetAttribute("url", url);
    el.InnerText = name;
    myXml.DocumentElement.AppendChild(el);
    myXml.Save(favXml); 
}

注意:要测试此方法,您应该在测试框架的setup()和tearDown()过程中处理文件创建和删除逻辑。 --SJ