Ich versuche, XML-Antwort von Moodle Web Services zu deserialisieren.Parse moodle XML zu C# (dotnet) -Objekt
Ich könnte es in ein Dotnet-Objekt analysieren, wenn es verschiedene benannte Attribute wie ID, Kurzname, IDnumber usw. hatte. Aber es hat ein Array von KEY-Attributen mit tatsächlichen Feldnamen als Wert und darin befindet sich ein weiterer Knoten den Feldwert haben. Hier
ist ein Beispiel:
<?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>
Ich möchte diese XML in ein Objekt dieser Klasse analysieren:
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
}
Gibt es einen direkten Weg, es zu tun, oder sollte ich einen Parser schreiben Methode mit Schalter Fällen für jedes Feld?
Wäre es hilfreich, JSON-formatierte Daten anstelle von XML zurückzugeben? Das Hinzufügen des Parameters moodlewsrestformat = json zur Webservice-Anfrage erfolgt stattdessen im JSON-Format. – davosmith
eigentlich wusste ich, dass es auch JSON zurückgibt, aber irgendwie habe ich es einfach vergessen und konnte nicht über das Standard-XML-Format hinaus denken. JSON wäre viel einfacher zu arbeiten. Vielen Dank. – Danish