0

我有一个应用程序,用户将在其中保存稍后将被提取的信息。每个“试验”都有自己的 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();

有什么建议么?我很难找到一种有效的方法来检查是否已经创建了一个事件并且已经在一个事件中创建了一只狗。

4

3 回答 3

1

using XmlSerializer could be easier, For example

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;
}
于 2012-08-07T12:46:06.950 回答
1

在文件写入期间使用 aDictionary或 aHashedSet填充,检查该字典是否有正确的键,以检查狗/事件是否已经“看到”并跳过它。

于 2012-08-07T12:27:29.890 回答
0

我认为您需要查看 LINQ to XML:http: //msdn.microsoft.com/fr-fr/library/bb387098.aspx

这样您就可以查询您的 XML 文档并检索您需要检查的内容。

旁注:我建议您使用关键字“使用”来自动 Dispose() 您的 streamWriter。检查这个http://msdn.microsoft.com/fr-fr/library/yh598w02%28v=vs.80%29

您将了解到,基本上,每个实现 IDisposable 的类都可以与 using 指令一起使用。

于 2012-08-07T12:41:01.090 回答