Einfacher Weg zu serialisieren C# - Klasse als XML-text
Während der Versuch einer Antwort auf eine andere Frage, ich war serialisieren ein C# - Objekt in eine XML-Zeichenfolge. Es war überraschend schwer; das war der kürzeste code-snippet, das ich kommen konnte mit:
var yourList = new List<int>() { 1, 2, 3 };
var ms = new MemoryStream();
var xtw = new XmlTextWriter(ms, Encoding.UTF8);
var xs = new XmlSerializer(yourList.GetType());
xs.Serialize(xtw, yourList);
var encoding = new UTF8Encoding();
string xmlEncodedList = encoding.GetString(ms.GetBuffer());
Das Ergebnis ist okay:
<?xml version="1.0" encoding="utf-8"?>
<ArrayOfInt
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<int>1</int>
<int>2</int>
<int>3</int>
</ArrayOfInt>
Aber das snippet ist mehr kompliziert als ich denke, dass es sein sollte. Ich kann nicht glauben, Sie müssen wissen über Kodierung und MemoryStream für diese einfache Aufgabe.
Gibt es einen kürzeren Weg zum serialisieren eines Objekts in einen XML-string?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Etwas kürzer 🙂
Obwohl es ein Fehler, mit dieser bisherigen Herangehensweise, die einen Hinweis Wert. Es generiert eine
utf-16
- header wir verwenden StringWriter es ist also nicht genau den gleichen code. Umutf-8
header sollen wir verwenden eine MemoryStream und ein XmlWriter die eine zusätzliche code-Zeile:GetStringBuilder()
Schreiben Sie eine Erweiterung Methode oder eine wrapper Klasse/Funktion zu Kapseln, die snippet.
Brauchen Sie nicht die
MemoryStream
benutzen Sie einfach eineStringWriter
: