我目前正在编写一个函数来通过 LINQ 向/从 XML 文档保存和读取数据。目前我可以很好地编写文档,但是如果我要向现有项目添加数据,它只会添加一个新项目。我的目标是创建一个地址簿类型系统(是的,我知道那里有 1000 个,这只是我自己的一个学习项目),我已经尝试过 ini 和基本文本,但似乎 XML 是最好的方式来使用像 sql 这样的本地数据库。目前我有:
XDocument doc = XDocument.Load(@"C:\TextXML.xml");
var data = new XElement("Entry",
new XElement("Name", textBox1.Text),
new XElement("Address", richTextBox2.Text),
new XElement("Comments", richTextBox1.Text));
doc.Element("Contacts").Add(data);
doc.Save(@"C:\TextXML.xml");
我搜索了SO,似乎找不到如何附加/替换。现在,即使我添加到文档中,这也可以正确保存所有内容,但是如果我想更新一个条目,我不确定如何在不创建新的“条目”的情况下进行操作,也没有获得删除条目的诀窍。(我对 C# 还是有点陌生,而且是自学成才的,所以请原谅我忽略的任何明显的东西。)
我的第二个问题围绕着将信息加载到文本框中。我可以将条目名称列表加载到列表框中,但是当我打开该条目中的信息时,我不确定如何正确获取嵌套信息。对于上面的示例,我需要类似于以下内容:
XDocument doc = XDocument.Load(@"C:\TextXML.xml");
boxName.Text = The name from the SelectedItem of the list box.
boxAddress.Text = The address child of the element named above etc.
我尝试过的每种方法都以一个空引用异常结束,这告诉我我没有指向正确的东西,但我不确定如何正确处理这些东西。我还尝试从列表框中创建 SelectedItem 的字符串和var以帮助命名,并使用 ToString 方法,但仍然无法弄清楚。