Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Mengeluarkan Perisytiharan Ruang Nama XML dengan Cekap dalam C#?

Bagaimanakah Saya Boleh Mengeluarkan Perisytiharan Ruang Nama XML dengan Cekap dalam C#?

Linda Hamilton
Lepaskan: 2025-01-23 22:44:13
asal
575 orang telah melayarinya

How Can I Efficiently Remove XML Namespace Declarations in C#?

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

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

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

Penyelesaian:

Anda boleh menggunakan fungsi rekursif untuk mengulangi dokumen XML dan mengalih keluar ruang nama daripada semua elemen. Fungsi mengikut langkah berikut:

  1. Untuk elemen daun (elemen tanpa anak), cipta elemen baharu dengan nama setempat dan nilai elemen asal dan salin sebarang atribut.
  2. Untuk elemen dengan elemen kanak-kanak, cipta elemen baharu dengan nama tempatan elemen asal dan panggil fungsi secara rekursif untuk setiap elemen kanak-kanak.

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

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!

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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan