Mengalih keluar ruang nama elemen XML ialah tugas biasa dan C# menyediakan penyelesaian yang mudah.
Pertama, tentukan antara muka untuk melaksanakan fungsi yang diperlukan:
<code class="language-csharp">public interface IXMLUtils { string RemoveAllNamespaces(string xmlDocument); }</code>
Data XML berikut digunakan sebagai contoh:
<code class="language-xml"><?xml version="1.0" encoding="utf-16"?><arrayofinserts xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><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"></id_frame><type3 xmlns="http://schema.peters.com/doc_353/1/Types"><type2></type2><main>false</main></type3><status xmlns="http://schema.peters.com/doc_353/1/Types">Some state</status></insert></arrayofinserts></code>
Fungsi teras untuk mengalih keluar ruang nama adalah rekursif dan berfungsi seperti berikut:
<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>
Ia mengulangi struktur XML, mengalih keluar ruang nama dan mengekalkan kandungan elemen dan atribut.
Menggunakan antara muka dan fungsi yang ditakrifkan sebelum ini, anda boleh memanggil fungsi penyingkiran ruang nama XML seperti ini:
<code class="language-csharp">string result = RemoveAllNamespaces(xmlDocument);</code>
Hasil akhir selepas mengalih keluar ruang nama daripada contoh XML:
<code class="language-xml"><?xml version="1.0" encoding="utf-16"?><arrayofinserts><insert><offer>0174587</offer><type2>014717</type2><supplier>019172</supplier><id_frame></id_frame><type3><type2></type2><main>false</main></type3><status>Some state</status></insert></arrayofinserts></code>
Menggunakan kelas XElement
C# dan fungsi rekursif, anda boleh mengalih keluar ruang nama daripada dokumen XML dengan berkesan, menjadikannya lebih mudah untuk memanipulasi dan memproses data.
Atas ialah kandungan terperinci Bagaimana untuk Mengeluarkan Ruang Nama XML dengan Cekap dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!