这个问题有两个部分:首先,当用户单击程序中的“添加注释”按钮时,我需要能够将文本添加到文档中 XML 元素的内容中。我可以做到这一点没有问题。但是,如果用户想稍后添加更多注释,则由于我调用了“setElementValue”方法,原始注释将被删除。是否有替代方法,以便将注释添加到现有文本中,而不是替换现有文本?
public static void addNote(ListViewItem file, string note)
{
int i = 0;
while (i < 20)
{
try
{
XDocument doc = XDocument.Load(Form1.CSDBpath + Form1.projectName + "\\Data.xml");
string name = file.Text;
var el = (from item in doc.Descendants("dataModule")
where item.Descendants("DMC").First().Value == name
select item).First();
if (el != null)
{
el.SetElementValue("notes", note);
}
doc.Save(Form1.CSDBpath + Form1.projectName + "\\Data.xml");
return;
}
catch
{
i++;
}
}
MessageBox.Show("Please try again in a moment, system busy (3)", "DAWS");
}
问题的第二部分:正如您在我的代码中看到的,我需要访问和写入一个 xml 数据文件,该文件存储大量文件的各种信息(包括上述问题的注释)。这个xml数据文件被多个用户共享,偶尔他们的系统试图同时访问该文件,这显然会导致问题。我已经通过循环一定次数来解决这个问题 - 使程序重复尝试打开并写入 xml 文件。我是以公认的方式解决这个问题,还是有更好的方法?