将数据写入/加载到 XML 文件 C#
本文关键字:XML 文件 加载 数据 | 更新日期: 2024-10-25 08:46:27
我有一个应用程序,用户将在其中保存稍后将提取的信息。 每个"试验"都有自己的XML文件,在该XML文件中,将有由EventID标识的特定事件,以及参加每个赛事的特定狗,这些狗将拥有自己的DogID。
我需要找到一种方法来检查特定事件中的特定事件或狗是否已写入此文件。 下面是将首次创建此 XML 文件的代码,然后在为此文件创建特定事件和狗时进行更新。
XmlWriter w = XmlWriter.Create(fs);
w.WriteStartDocument();
w.WriteStartElement("Event");
for (int counter = 0; counter < registeredEventCount; counter++)
{
string eventString = registeredArrayList[counter].ToString();
// eventString = eventString.Replace(" ", "");
w.WriteStartElement("Event");
w.WriteAttributeString("id", eventString);
// Write a product.
w.WriteStartElement("dogId");
w.WriteElementString("eventID", eventSelectComboBox.SelectedItem.ToString());
w.WriteElementString("ukcNumber", ukcDogNumTextBox.Text.ToString());
w.WriteElementString("breed", breedTextBox.Text.ToString());
w.WriteElementString("dogName", dogNameTextBox.Text.ToString());
w.WriteEndElement();
w.WriteEndElement();
}
w.WriteEndDocument();
w.Flush();
有什么建议吗? 我很难找到一种有效的方法来检查事件是否已创建并且已经在事件中创建了狗。
使用在
文件写入过程中填充的Dictionary
或HashedSet
,检查该字典中的正确键,以检查狗/事件是否已经"看到"并跳过它。
使用XmlSerializer可能更容易,例如
XmlSerializer serializer = new XmlSerializer(typeof(Trial));
serializer.Serialize(stream, trialObject);
public class Trial
{
public List<Event> Events;
}
public class Event
{
public string eventID;
public string dogId;
public string ukcNumber;
public string breead;
public string dogName;
}
我认为你需要看看LINQ to XML:http://msdn.microsoft.com/fr-fr/library/bb387098.aspx
这样,您可以查询 XML 文档并检索需要检查的内容。
旁注:我建议你使用关键字"using"来自动Dispose()你的streamWriter。检查此 http://msdn.microsoft.com/fr-fr/library/yh598w02%28v=vs.80%29
您将了解到,基本上,实现 IDisposable 的每个类都可以与 using 入侵一起使用。