Един проблем с StringWriter
е, че по подразбиране не ви позволява да зададете кодирането, което рекламира - така че можете да получите XML документ, който рекламира кодирането му като UTF-16, което означава, че трябва да го кодирате като UTF-16, ако го напишете на файл. Имам малък клас, за да помогна с това:
public sealed class StringWriterWithEncoding : StringWriter
{
public override Encoding Encoding { get; }
public StringWriterWithEncoding (Encoding encoding)
{
Encoding = encoding;
}
}
Или ако имате нужда само от UTF-8 (което е всичко, от което често се нуждая):
public sealed class Utf8StringWriter : StringWriter
{
public override Encoding Encoding => Encoding.UTF8;
}
Що се отнася до защо не можахте да запазите своя XML в базата данни - ще трябва да ни дадете повече подробности за случилото се, когато сте опитали, ако искате да можем да го диагностицираме/поправим.