Kosongkan ruang nama dengan mudah dalam dokumen XML menggunakan C#
Dalam pemprosesan XML, ruang nama sering menjadi pening kepala, mengganggu data seperti tetamu yang tidak diundang. Mengalih keluar ruang nama yang berlebihan ini boleh menjadi rumit, tetapi dengan kuasa C# pada .NET 3.5 SP1, anda boleh mengucapkan selamat tinggal kepada ruang nama dengan mudah.
Untuk membantu anda melaksanakan pembersihan ruang nama bagi dokumen XML, kami menyediakan penyelesaian yang mudah dan cekap. Fungsi RemoveAllNamespaces()
berasaskan antara muka menyediakan cara yang mudah dan elegan untuk mengalih keluar ruang nama daripada dokumen XML.
RemoveAllNamespaces()
Penjelasan terperinci tentang fungsi
Inti penyelesaian ialah fungsi RemoveAllNamespaces()
padat, yang menerima dokumen XML sebagai input dan mengalih keluar semua ruang nama:
<code class="language-csharp">public static string RemoveAllNamespaces(string xmlDocument) { XElement xmlDocumentWithoutNs = RemoveAllNamespaces(XElement.Parse(xmlDocument)); return xmlDocumentWithoutNs.ToString(); }</code>
Fungsi rekursif teras asas RemoveAllNamespaces()
mengendalikan pengangkatan berat:
<code class="language-csharp">private static XElement RemoveAllNamespaces(XElement xmlDocument) { if (!xmlDocument.HasElements) { XElement xElement = new XElement(xmlDocument.Name.LocalName); xElement.Value = xmlDocument.Value; foreach (XAttribute attribute in xmlDocument.Attributes()) xElement.Add(attribute); return xElement; } return new XElement(xmlDocument.Name.LocalName, xmlDocument.Elements().Select(el => RemoveAllNamespaces(el))); }</code>
Contoh dan hasil XML
Untuk menggambarkan kuasa penyelesaian ini, mari lihat contoh XML yang mengandungi ruang nama:
<code class="language-xml"><?xml version="1.0" encoding="utf-16"?> <ArrayOfInserts xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <insert> <offer xmlns="http://schema.peters.com/doc_353/1/Types">0174587</offer> <type2 xmlns="http://schema.peters.com/doc_353/1/Types">014717</type2> <supplier xmlns="http://schema.peters.com/doc_353/1/Types">019172</supplier> <id_frame xmlns="http://schema.peters.com/doc_353/1/Types" /> <type3 xmlns="http://schema.peters.com/doc_353/1/Types"> <type2 /> <main>false</main> </type3> <status xmlns="http://schema.peters.com/doc_353/1/Types">Some state</status> </insert> </ArrayOfInserts></code>
Selepas memanggil fungsi RemoveAllNamespaces()
, dokumen XML akan ditukar dan semua ruang nama akan dialih keluar:
<code class="language-xml"><?xml version="1.0" encoding="utf-16"?> <ArrayOfInserts> <insert> <offer>0174587</offer> <type2>014717</type2> <supplier>019172</supplier> <id_frame /> <type3> <type2 /> <main>false</main> </type3> <status>Some state</status> </insert> </ArrayOfInserts></code>
Ringkasan
Menggunakan penyelesaian RemoveAllNamespaces()
kami, anda kini mempunyai cara yang bersih dan boleh dipercayai untuk mengalih keluar ruang nama daripada dokumen C# XML. Sama ada anda berurusan dengan elemen tunggal atau hierarki kompleks, kod kami memastikan data XML anda bebas ruang nama.
Atas ialah kandungan terperinci Bagaimana untuk Mengeluarkan Ruang Nama dengan Cekap dari Dokumen XML Menggunakan C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!