Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Utilisation de StringWriter pour la sérialisation XML

Un problème avec StringWriter est que par défaut, il ne vous permet pas de définir l'encodage qu'il annonce - vous pouvez donc vous retrouver avec un document XML annonçant son encodage en UTF-16, ce qui signifie que vous devez l'encoder en UTF-16 si vous l'écrivez à un fichier. J'ai une petite classe pour aider avec ça :

public sealed class StringWriterWithEncoding : StringWriter
{
    public override Encoding Encoding { get; }

    public StringWriterWithEncoding (Encoding encoding)
    {
        Encoding = encoding;
    }    
}

Ou si vous n'avez besoin que d'UTF-8 (ce qui est tout ce dont j'ai souvent besoin) :

public sealed class Utf8StringWriter : StringWriter
{
    public override Encoding Encoding => Encoding.UTF8;
}

Quant à savoir pourquoi vous n'avez pas pu enregistrer votre XML dans la base de données - vous devrez nous donner plus de détails sur ce qui s'est passé lorsque vous avez essayé, si vous voulez que nous puissions diagnostiquer/réparer le problème.