在我的代码,我有一个标志枚举一周的日子里,如下:的XElement使用标志枚举
[Flags]
public enum DaysOfWeek // enumeration for days of week
{
Sunday = 0x0000001,
Saturday = 0x0000010,
Friday = 0x0000100,
Thursday = 0x0001000,
Wednesday = 0x0010000,
Tuesday = 0x0100000,
Monday = 0x1000000,
MondayToFriday = Monday | Tuesday | Wednesday | Thursday | Friday,
MondayToSaturday = MondayToFriday | Saturday,
NotSaturday = MondayToFriday | Sunday,
Weekend = Saturday | Sunday,
MondayToSunday = MondayToFriday | Weekend,
HolidaysOnly = ~MondayToSunday,
}
而且我用这个作为在下面的简单示例输出XML:
List<DaysOfWeek> profiles = new List<DaysOfWeek>();
profiles.Add(DaysOfWeek.MondayToFriday);
profiles.Add(DaysOfWeek.MondayToSaturday);
profiles.Add(DaysOfWeek.Monday | DaysOfWeek.Tuesday);
XElement xml = new XElement("Profiles",
from DaysOfWeek pf in profiles
select new XElement("Profile",pf.ToString())
);
Console.WriteLine(xml);
这使我的输出:
<Profiles>
<Profile>MondayToFriday</Profile>
<Profile>MondayToSaturday</Profile>
<Profile>Tuesday, Monday</Profile>
</Profiles>
但我想要的是:
<Profiles>
<Profile>
<MondayToFriday />
</Profile
<Profile>
<MondayToSaturday />
</Profile>
<Profile>
<Monday />
<Tuesday />
</Profile>
</Profiles>
我明白我的XElement的格式需要扩展,以便我在一周中得到空元素,但是如果我这样做,那么“周二,周一”元素会抛出异常,因为我可以不要使用逗号(或空格)作为元素名称的一部分。
但
a)如果不使用天的预定义组中的一个,我需要写在一个特定的顺序(周一,周二,周三,周四,周五,周六,周日的元素),这是考虑由模式(见下面的c)。我为自己做了很多努力,因为我已经把它们定义为反向,星期一作为高位,但这是因为我处理的旧数据格式首先将日期显示为字符串中的标志(1/0)那个顺序例如星期一和星期二是“1100000”(左一星期一,右星期一); b)我希望能够输出适当的元素,而不必单独测试所有的东西(尽管如果必须的话,我想我会不得不)。和
c)我正在寻找的输出XML格式是由带有XSD的标准决定的,我无法更改它。
任何好点子?
感谢编辑@ MUG4N。不太清楚最初的位置[去,因为它在我原来的复制代码中! – StuartR143