moodle Webサービスから受け取ったXMLレスポンスを逆シリアル化しようとしています。XMLをC#(ドットネット)オブジェクトにパースする
id、shortname、idnumberなどの別個の名前付き属性があれば、それをドットネットオブジェクトに解析できますが、実際のフィールド名を持つKEY属性の配列があり、その内部に別のノードがありますフィールド値を有する。ここで
はサンプルです:
<?xml version="1.0" encoding="UTF-8" ?>
<RESPONSE>
<MULTIPLE>
<SINGLE>
<KEY name="id">
<VALUE>2</VALUE>
</KEY>
<KEY name="shortname">
<VALUE>CS-101</VALUE>
</KEY>
<KEY name="fullname">
<VALUE>CS-101</VALUE>
</KEY>
<KEY name="enrolledusercount">
<VALUE>2</VALUE>
</KEY>
<KEY name="idnumber">
<VALUE></VALUE>
</KEY>
<KEY name="visible">
<VALUE>1</VALUE>
</KEY>
<KEY name="summary">
<VALUE><p>CS-101<br /></p></VALUE>
</KEY>
<KEY name="summaryformat">
<VALUE>1</VALUE>
</KEY>
<KEY name="format">
<VALUE>weeks</VALUE>
</KEY>
<KEY name="showgrades">
<VALUE>1</VALUE>
</KEY>
<KEY name="lang">
<VALUE></VALUE>
</KEY>
<KEY name="enablecompletion">
<VALUE>0</VALUE>
</KEY>
</SINGLE>
</MULTIPLE>
</RESPONSE>
私は、このクラスのオブジェクトにこのXMLを解析する:
class Course
{
public int id { get; set; }
public string shortname { get; set; } //short name of course
public string fullname { get; set; } //long name of course
public int enrolledusercount { get; set; } //Number of enrolled users in this course
public string idnumber { get; set; } //id number of course
public int visible { get; set; } //1 means visible, 0 means hidden course
public string summary { get; set; }
public int summaryformat { get; set; } //summary format (1 = HTML, 0 = MOODLE, 2 = PLAIN or 4 = MARKDOWN)
public string format { get; set; } //course format: weeks, topics, social, site
public int showgrades { get; set; } //true if grades are shown, otherwise false
public string lang { get; set; } //forced course language
public int enablecompletion { get; set; } //true if completion is enabled, otherwise false
}
はそれを行うための直接的な方法があるか、私はパーサを書く必要がありますフィールドごとにスイッチケースを持つ方法?
XMLの代わりにJSON形式のデータを返すのに役立ちますか? parser moodlewsrestformat = jsonをwebserviceリクエストに追加すると、代わりにJSON形式で返されます。 – davosmith
実際に私はJSONも返すことは知っていましたが、何とか忘れてしまい、デフォルトのXMLフォーマットを超えて考えることができませんでした。 JSONの方がはるかに簡単です。ありがとう。 – Danish