私は以下のXMLファイルをいくつか成功させて解析しようとしています。オンライン私は一緒に次のC#コードをつなぎいるいくつかのチュートリアルを使用してC#複雑なXMLを解析するLINQ
<?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>
:
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; }
}
お手数ですが、ご了承ください。解決策がある場合は、投稿しないでください。私はそれを学び、今後このコミュニティに貢献できるように説明してください。
ありがとうございます! Gabe
だから、私のXMLファイルには、私は私のプロジェクト全体のためにそれらを気にしない場合でも、それぞれのクラスを作成する必要があり、属性\他の要素が含まれている場合は? –
@ Ashwin Nair - プライベート変数の規約は何ですか?小文字にする人ですか?そして、私はしばしば名前に先行するアンダースコア "_"を持つ変数を見ました。アンダースコアは何を表していますか? –
@ Ashwin Nair - もう少し質問がありますが、私はあなたがFrequencyとIntervalのクラスを宣言した方法を理解していません。これについて少し詳しく説明できますか?また、プロパティのデコレータがオブジェクトタイプを指定するだけでなく、[XMLAttribute( "EveryMinutes")]のようなプロパティ名を指定するコードは不要ですか?もしそうなら、なぜですか? –