Sérialisation XML avec StringWriter : une approche alternative
Lorsqu'il s'agit de sérialiser des objets en chaînes XML, les développeurs s'appuient souvent sur le mécanisme par défaut utilisant MemoryStream et XmlTextWriter. Cependant, une méthode alternative utilise StringWriter pour une approche plus rationalisée.
Utilisation de StringWriter
La classe StringWriter fournit un moyen pratique d'écrire du contenu textuel dans une chaîne. En remplaçant MemoryStream par StringWriter dans le code suivant, vous pouvez simplement écrire le XML sérialisé dans une chaîne :
XmlSerializer ser = new XmlSerializer(typeof(MyObject)); StringWriter writer = new StringWriter(); ser.Serialize(writer, myObject); string serializedValue = writer.ToString();
Avantages de StringWriter
Considérations sur l'encodage
Par défaut, StringWriter utilise l'encodage système par défaut, qui peut différer de l'UTF-16, l'encodage attendu pour les documents XML. Pour garantir la compatibilité UTF-16, vous pouvez utiliser des classes personnalisées telles que StringWriterWithEncoding ou Utf8StringWriter pour définir explicitement l'encodage souhaité :
public sealed class StringWriterWithEncoding : StringWriter { public override Encoding Encoding { get; } public StringWriterWithEncoding(Encoding encoding) { Encoding = encoding; } } public sealed class Utf8StringWriter : StringWriter { public override Encoding Encoding => Encoding.UTF8; }
Stockage de base de données
Le problème que vous avez rencontré lors du stockage de XML dans SQL Server peut être lié à l'encodage. Si la chaîne XML est déjà codée en UTF-16, vous ne devriez pas avoir besoin de définir le codage manuellement dans la déclaration XML. Cependant, si la chaîne n'est pas codée en UTF-16, vous devrez peut-être définir manuellement le codage sur UTF-16 pour garantir un stockage correct.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!