Cabaran timbul apabila cuba menyerikan objek tanpa menghasilkan pengisytiharan ruang nama XML yang berlebihan seperti xsi dan xsd. Secara lalai, proses bersiri menyuntik ruang nama ini ke dalam dokumen XML yang terhasil.
Pertimbangkan coretan kod berikut yang menunjukkan masalah:
StringBuilder builder = new StringBuilder(); XmlWriterSettings settings = new XmlWriterSettings(); settings.OmitXmlDeclaration = true; using (XmlWriter xmlWriter = XmlWriter.Create(builder, settings)) { XmlSerializer s = new XmlSerializer(objectToSerialize.GetType()); s.Serialize(xmlWriter, objectToSerialize); }
Dokumen XML yang terhasil akan termasuk pengisytiharan ruang nama:
<message xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns="urn:something"> ... </message>
Untuk menghapuskan pengisytiharan ruang nama yang tidak diperlukan ini, adalah penting untuk menggunakan ruang nama tersuai objek:
... XmlSerializer s = new XmlSerializer(objectToSerialize.GetType()); XmlSerializerNamespaces ns = new XmlSerializerNamespaces(); ns.Add("",""); s.Serialize(xmlWriter, objectToSerialize, ns);
Dengan menggunakan kelas XmlSerializerNamespaces dan menambah rentetan kosong sebagai kunci dan nilai, adalah mungkin untuk mengatasi pengisytiharan ruang nama lalai dan menghasilkan output yang diingini:
<message> ... </message>
Atas ialah kandungan terperinci Bagaimana untuk Menyesuaikan Pengisytiharan Ruang Nama Apabila Mensiri XML dalam .NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!