Ich habe einen WCF-Dienst, der eine XML-Zeichenfolge zurückgeben muss. Aber es scheint, als ob der Autor nur eine Datei erstellen möchte, keine Zeichenfolge. Ich habe es versucht:
string nextXMLstring = "";
using (XmlWriter writer = XmlWriter.Create(nextXMLstring))
Dies erzeugt einen Fehler, der besagt, dass nextXMLstring keinen Dateipfad hat. Es will so etwas wie:
using (XmlWriter writer = XmlWriter.Create("nextXMLstring.xml"))
Wie kann ich mein XML aufbauen und es dann als Zeichenfolge zurückgeben?
Vielen Dank!!
Wie Richard sagte,
StringWriter
ist der Weg nach vorne. Es gibt jedoch einen Haken: StandardmäßigStringWriter
wird für UTF-16 geworben. Normalerweise ist XML in UTF-8. Sie können dies beheben, indem Sie StringWriter in Unterklassen unterteilen.Dies wirkt sich auf die Erklärung von aus
XmlWriter
. Wenn Sie die Zeichenfolge dann an anderer Stelle in binärer Form ausschreiben, stellen Sie sicher, dass Sie eine Codierung verwenden, die mit der Codierung übereinstimmt, die Sie für die festgelegt habenStringWriter
. (Der obige Code setzt immer UTF-8 voraus. Es ist trivial, eine allgemeinere Version zu erstellen, die eine Codierung im Konstruktor akzeptiert.)Sie würden dann verwenden:
quelle
writer
das nicht mehr als einmal entsorgt wird?Ich weiß, dass dies alt und beantwortet ist, aber hier ist eine andere Möglichkeit, dies zu tun. Insbesondere, wenn Sie die UTF8-Stückliste nicht am Anfang Ihrer Zeichenfolge und den eingerückten Text möchten:
quelle
Encoding.UTF8.GetString(ms.ToArray())
ist Vereinfachung bei Ihrer Rückkehr.ms.ToArray()
Gibt keine Artikel zurück, als ich dies versucht habe. Musstex.Close()
die return-Anweisung direkt außerhalb der inneren using-Anweisung hinzufügen oder verschieben.Verwendung
StringBuilder
:quelle
Jungs vergessen nicht, xmlWriter.Close () und xmlWriter.Dispose () aufzurufen, sonst wird Ihre Zeichenfolge nicht fertig erstellt. Es wird nur eine leere Zeichenfolge sein
quelle
xmlWriter.Close()
war die Lösung.Nun, ich denke, die einfachste und schnellste Lösung wäre hier nur:
quelle