【发布时间】:2016-12-16 00:28:26
【问题描述】:
我一直在尝试成功解析以下 XML 文件。
<?xml version="1.0"?>
<Settings>
<Tasks>
<Task ID="1" Name="task_1" Active="1" NextEID="25" AR="0" CacheNames="random">
<Schedules>
<Schedule OnlyUntilFirstSuccess="0" FailIfNoSuccessInSched="0" RunEvenIfNotif="0">
<Days>
<DayOfWeek>Monday</DayOfWeek>
<DayOfWeek>Tuesday</DayOfWeek>
<DayOfWeek>Wednesday</DayOfWeek>
<DayOfWeek>Thursday</DayOfWeek>
<DayOfWeek>Friday</DayOfWeek>
<DayOfWeek>Saturday</DayOfWeek>
<DayOfWeek>Sunday</DayOfWeek>
</Days>
<Frequency>
<Interval StartTime="09:45" EndTime="09:45" EveryMinutes="0"></Interval>
</Frequency>
</Schedule>
</Schedules>
</Task>
<Task ID="2" Name="task_2" Active="1" NextEID="25" AR="0" CacheNames="random">
<Schedules>
<Schedule OnlyUntilFirstSuccess="0" FailIfNoSuccessInSched="0" RunEvenIfNotif="0">
<Days>
<DayOfWeek>Monday</DayOfWeek>
<DayOfWeek>Tuesday</DayOfWeek>
<DayOfWeek>Wednesday</DayOfWeek>
<DayOfWeek>Thursday</DayOfWeek>
<DayOfWeek>Friday</DayOfWeek>
<DayOfWeek>Saturday</DayOfWeek>
<DayOfWeek>Sunday</DayOfWeek>
</Days>
<Frequency>
<Interval StartTime="12:45" EndTime="09:45" EveryMinutes="0"></Interval>
</Frequency>
</Schedule>
</Schedules>
</Task>
</Tasks>
</Settings>
使用网上的几个教程,我拼凑了以下 C# 代码:
public static void ParseXml()
{
string strFile = "File.xml";
XDocument xdoc = XDocument.Load(strFile);
var tasks = from s in xdoc.Descendants("Tasks")
select new
{
taskID = s.Element("Task").Attribute("ID").Value,
taskName = s.Element("Task").Attribute("Name").Value,
taskActive = s.Element("Task").Attribute("Active").Value,
taskSchedule = s.Element("Task").Element("Schedules").Element("Schedule").Element("Days")
};
foreach (var t in tasks)
{
Console.WriteLine("Task Id :: {0}", t.taskID);
Console.WriteLine("Task Name :: {0}", t.taskName);
Console.WriteLine("Task Status :: {0}", t.taskActive);
Console.WriteLine("Task Schedule :: {0}", t.taskSchedule);
}
Console.ReadKey();
}
我的目标是解析出每个任务、任务 ID、名称、天数、频率。我希望最终能够使用这些值在散点图上绘制 TaskID 和 StartTime。我尝试创建以下类,认为它可以帮助我处理文件,但我不知道如何将它们联系在一起。
public class Task
{
public static int taskId { get; set; }
public static string taskName { get; set; }
}
public class Schedule
{
public enum DayOfWeek
{
Monday,
Tuesday,
Wednsday,
Thursday,
Friday,
Saturday,
Sunday
}
}
public class Frequency
{
public static DateTime startTime { get; set; }
public static DateTime endTime { get; set; }
public static int everyMins { get; set; }
}
任何帮助/方向将不胜感激。如果您有解决方案,请不要发布解决方案。请解释一下,以便我可以从中学习并在未来为这个社区做出贡献。
谢谢! 加布
【问题讨论】:
标签: c# xml linq parsing serialization