Alih keluar pengisytiharan ruang nama XML dengan cekap dalam C#
Artikel ini menyediakan penyelesaian komprehensif untuk mengalih keluar pengisytiharan ruang nama daripada dokumen XML untuk memudahkan struktur atau memenuhi keperluan khusus.
Soalan:
Anda ingin mengalih keluar semua pengisytiharan ruang nama daripada dokumen XML untuk memudahkan strukturnya atau memenuhi keperluan khusus.
Antara Muka:
<code class="language-csharp">public interface IXMLUtils { string RemoveAllNamespaces(string xmlDocument); }</code>
Contoh XML:
<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>
Keluaran yang dijangkakan:
<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>
Penyelesaian:
Anda boleh menggunakan fungsi rekursif untuk mengulangi dokumen XML dan mengalih keluar ruang nama daripada semua elemen. Fungsi mengikut langkah berikut:
Berikut ialah pelaksanaan C# bagi penyelesaian:
<code class="language-csharp">public static string RemoveAllNamespaces(string xmlDocument) { XElement xmlDocumentWithoutNamespaces = RemoveAllNamespaces(XElement.Parse(xmlDocument)); return xmlDocumentWithoutNamespaces.ToString(); } 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>
Penyelesaian ini komprehensif dan teguh serta boleh mengendalikan kedua-dua elemen daun dan bukan daun dengan cekap. Ia juga mengekalkan nilai dan sifat asal unsur XML, memastikan penyingkiran ruang nama yang boleh dipercayai dan tepat.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengeluarkan Perisytiharan Ruang Nama XML dengan Cekap dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!