Ich habe die folgende Funktion:JSON.Net: Konvertieren JSON-String aus XML-Zeichenfolge Beispiel Ausgabe
public static T GetInstance<T>(string xmlString)
{
var xmlDoc = new XmlDocument();
xmlDoc.Load(new StringReader(xmlString));
string jsonString = JsonConvert.SerializeXmlNode(xmlDoc.DocumentElement);
T instance = JsonConvert.DeserializeObject(jsonString, typeof(T)) as T;
return instance;
}
Es funktioniert für normale XML-Strings in Ordnung. wenn die Eingabe-XML-Zeichenfolge enthält Kommentare jedoch, wie:
....
<!-- some comments ...
-->
....
Dann wird der Funktionsaufruf JsonConvert.DeserializeObject() eine Ausnahme aus:
Newtonsoft.Json.JsonSerializationException was unhandled
Message="Unexpected token when deserializing object: Comment"
Source="Newtonsoft.Json"
StackTrace:
at Newtonsoft.Json.JsonSerializer.PopulateObject(Object newObject, JsonReader reader, Type objectType)
....
Entweder ich muss trimmen alle Kommentare in der XML-Zeichenkette, oder wenn ich irgendwelche Optionseinstellungen in JsonConvert verwenden kann, um Kommentare zu ignorieren.
Für die erste Option, wenn ich alle Kommentare mit XmlDocument nehmen muss, gibt es Optionen in XmlDocument verfügbar, um eine XML-Zeichenfolge in Nodes-only XML-Zeichenfolge zu konvertieren?
Für die zweite Option, bevorzuge ich, wenn es eine Option in Json.Net, Kommentare zu ignorieren, wenn desialize zum Objekt?
Upps ich nicht Kommentare dachte. Ich werde Unterstützung für die Behandlung in der nächsten Version von Json.NET hinzufügen. –