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

ファイルの書き込み中にDictionaryまたはを使用し、その辞書で適切なキーを確認して、犬/イベントがすでに「表示」されているかどうかを確認し、スキップします。HashedSet

于 2012-08-07T12:27:29.890 に答える
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;
}
于 2012-08-07T12:46:06.950 に答える
0

LINQ to XMLを確認する必要があると思います:http://msdn.microsoft.com/fr-fr/library/bb387098.aspx

このようにして、XMLドキュメントをクエリし、チェックする必要があるものを取得できます。

補足:streamWriterを自動的にDispose()するには、キーワード「using」を使用することをお勧めします。これを確認してくださいhttp://msdn.microsoft.com/fr-fr/library/yh598w02%28v=vs.80%29

基本的に、IDisposableを実装するすべてのクラスはusing命令で使用できることを学びます。

于 2012-08-07T12:41:01.090 に答える