我正在制作一个网络浏览器,我再一次陷入困境。我目前使用的代码创建了一个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个预览测试人员,他们都对这个故障感到恼火。
答案 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