我有一个应用程序,用户将保存稍后将被提取的信息。每个“试用版”都有自己的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();
有什么建议吗?我无法找到一种有效的方法来检查是否已经创建了一个事件,并且已经创建了一条狗。
答案 0 :(得分:1)
在文件写入期间使用填充Dictionary
或HashedSet
,检查该字典是否有正确的密钥,以检查狗/事件是否已被“看到”并跳过它。 / p>
答案 1 :(得分:1)
使用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;
}
答案 2 :(得分:0)
我认为你需要看看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 intruction一起使用。