在我的代碼,我有一個標誌枚舉一週的日子裏,如下:的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