XmlTextwriter Output als String

15/10/2009 - 19:28 von Werner Perplies | Report spam
Hi,

ich würde gerne einen String in Xml-Output mit gewünschter Codierung als
String umwandeln.

Generell könnte ich das natürlich über eine temporàre Datei realisieren:

XmlTextWriter xw = new XmlTextWriter(xmlFileName,
Encoding.GetEncoding(1252));
.
.
.
xw.Close();

und dann die Datei wieder einlesen.

es müsste doch einen einfacheren Weg geben, oder?

Wenn ich es so versuche:
internal string ConvertStringToXmlString(string tag, string
content)
{
StringWriter sw = new StringWriter();
XmlTextWriter xmlWriter = new XmlTextWriter(sw);
xmlWriter.WriteStartElement(tag);
xmlWriter.WriteString(content);
xmlWriter.WriteEndElement();
xmlWriter.Close();
return sw.ToString();
}
habe ich zwar einen String, kann aber das Encoding nicht festlegen.

Hat vielleicht einen Tipp für mich?

Bin für jede Hilfe dankbar.

Viele Grüße
Werner
Regulàre Ausdrücke testen?
http://www.weepee.de/de/wps_regex/wps_regex.html
www.weepee.eu
 

Lesen sie die antworten

#1 Martin Honnen
15/10/2009 - 19:54 | Warnen spam
Werner Perplies wrote:

ich würde gerne einen String in Xml-Output mit gewünschter Codierung als
String umwandeln.

Generell könnte ich das natürlich über eine temporàre Datei realisieren:

XmlTextWriter xw = new XmlTextWriter(xmlFileName,
Encoding.GetEncoding(1252));
.
.
.
xw.Close();

und dann die Datei wieder einlesen.

es müsste doch einen einfacheren Weg geben, oder?

Wenn ich es so versuche:
internal string ConvertStringToXmlString(string tag, string
content)
{
StringWriter sw = new StringWriter();
XmlTextWriter xmlWriter = new XmlTextWriter(sw);
xmlWriter.WriteStartElement(tag);
xmlWriter.WriteString(content);
xmlWriter.WriteEndElement();
xmlWriter.Close();
return sw.ToString();
}
habe ich zwar einen String, kann aber das Encoding nicht festlegen.



Ein .NET String ist intern immer UTF-16 kodiert.

Wenn es dir nur um die XML-Deklaration geht, dann kannst du von
StringWriter ableiten und die Encoding-Eigenschaft überschreiben:

public class StringWriterWithEncoding : StringWriter
{
private Encoding myEncoding;

public override Encoding Encoding
{
get
{
return myEncoding;
}
}
public StringWriterWithEncoding(Encoding enc) : base()
{
myEncoding = enc;
}
}

und dann etwa

internal string ConvertStringToXmlString(string tag, string
content, Encoding encoding)
{
StringWriter sw = new StringWriterWithEncoding(encoding);
using (XmlWriter xmlWriter = XmlWriter.Create(sw))
{
xmlWriter.WriteStartElement(tag);
xmlWriter.WriteString(content);
xmlWriter.WriteEndElement();
xmlWriter.Close();
}
return sw.ToString();
}

dann wird der XmlWriter in der XML-Deklaration das übergebene Encoding
ausgeben.


Martin Honnen MVP XML
http://msmvps.com/blogs/martin_honnen/

Ähnliche fragen