Pensiri XML dengan StringWriter: Pendekatan Alternatif
Apabila ia berkaitan dengan mensiri objek kepada rentetan XML, pembangun sering bergantung pada mekanisme lalai menggunakan MemoryStream dan XmlTextWriter. Walau bagaimanapun, kaedah alternatif menggunakan StringWriter untuk pendekatan yang lebih diperkemas.
Menggunakan StringWriter
Kelas StringWriter menyediakan cara yang mudah untuk menulis kandungan teks pada rentetan. Dengan menggantikan MemoryStream dengan StringWriter dalam kod berikut, anda hanya boleh menulis XML bersiri pada rentetan:
XmlSerializer ser = new XmlSerializer(typeof(MyObject)); StringWriter writer = new StringWriter(); ser.Serialize(writer, myObject); string serializedValue = writer.ToString();
Kelebihan StringWriter
Pertimbangan Pengekodan
Secara lalai, StringWriter menggunakan pengekodan sistem lalai, yang mungkin berbeza daripada UTF-16, yang dijangkakan pengekodan untuk dokumen XML. Untuk memastikan keserasian UTF-16, anda boleh menggunakan kelas tersuai seperti StringWriterWithEncoding atau Utf8StringWriter untuk menetapkan pengekodan yang diingini secara eksplisit:
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; }
Storan Pangkalan Data
Isu yang anda hadapi apabila menyimpan XML dalam SQL Server mungkin berkaitan dengan pengekodan. Jika rentetan XML sudah dikodkan sebagai UTF-16, anda tidak perlu menetapkan pengekodan secara manual dalam pengisytiharan XML. Walau bagaimanapun, jika rentetan tidak dikodkan sebagai UTF-16, anda mungkin perlu menetapkan pengekodan secara manual kepada UTF-16 untuk memastikan storan yang betul.
Atas ialah kandungan terperinci Adakah StringWriter Alternatif yang Lebih Baik kepada MemoryStream untuk Pensirilan XML dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!