作为XML属性的星期几?

时间:2015-04-17 16:19:43

标签: c# xml

所以我在C#中使用基于日历的应用程序,我需要得到一周中某个事件要重复的日子(例如,每周一/周五)。

我将事件存储在XML中,定义如下:

<events>
  <event startDate = "Insert Date Here" endDate = "Insert Date Here">Event Name</event>
</events>

如何在此XML文件中简单可靠地存储和检索一周中的特定日期?

如果有帮助,我会用CheckBoxList指定一周的日期,我将循环检查,以及检查。

3 个答案:

答案 0 :(得分:1)

您可以使用this XML library

中的以下内容
XElement a = new XElement("root");
a.Set("day", DayOfWeek.Thursday, true); // true = set as attribute of 'a'
DayOfWeek day = a.Get("day", DayOfWeek.Friday); // DayOfWeek.Friday is default
Console.WriteLine(day);

输出:

Thursday

生成的XML:

<root day="Thursday" />

答案 1 :(得分:0)

最简单的方法是将值序列化为int,然后将它们与C#代码中的枚举一起使用(0 =星期日,1 =星期一,等等)。你也可以使用这些词。

然后您可以阅读它们并使用代码中的内置enum values as listed in the docs来保持可读性。顺便说一句,

  

如果转换为整数,则其值的范围为零(表示   DayOfWeek.Sunday)至6(表示DayOfWeek.Saturday)。

如果您提供有关如何将数据从xml读入C#应用程序的详细信息,我可以提供更多细节。

答案 2 :(得分:0)

这似乎是你在设计中注入了脆弱性。假设您的&lt; event&gt;的星期几(DoW)和日期不一致?你的应用程序做了什么?

我认为最好根据初始日期计算星期几:

        var repeatingEvents = new List<DateTime>();
        repeatingEvents.Add(new DateTime(2015, 4, 15));
        for (var i = 1; i < 5; i++)
        {
            repeatingEvents.Add(repeatingEvents[0].AddDays(7*i));
        } 

这会在一周的同一天为您提供5个事件,而不必担心实际的DoW是什么。

如果你绝对坚持序列化DoW,请查看DateTime:它已经支持DayOfWeek函数,并且有一个DayOfWeek枚举供您使用。