Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Menyesuaikan Pengisytiharan Ruang Nama Apabila Mensiri XML dalam .NET?

Bagaimana untuk Menyesuaikan Pengisytiharan Ruang Nama Apabila Mensiri XML dalam .NET?

DDD
Lepaskan: 2025-01-01 12:08:12
asal
470 orang telah melayarinya

How to Customize Namespace Declarations When Serializing XML in .NET?

Menyesuaikan Pengisytiharan Ruang Nama untuk XML Bersiri dalam .NET

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);
}
Salin selepas log masuk

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>
Salin selepas log masuk

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);
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan