Heim >Backend-Entwicklung >C++ >Wie entferne ich effizient XML-Namespaces in C#?

Wie entferne ich effizient XML-Namespaces in C#?

Linda Hamilton
Linda HamiltonOriginal
2025-01-23 22:51:11554Durchsuche

How to Efficiently Remove XML Namespaces in C#?

XML-Element-Namespace effizient in C# entfernen

Das Entfernen des Namespace eines XML-Elements ist eine häufige Aufgabe und C# bietet eine unkomplizierte Lösung.

Schnittstellendefinition

Definieren Sie zunächst eine Schnittstelle zur Implementierung der erforderlichen Funktionalität:

<code class="language-csharp">public interface IXMLUtils
{
    string RemoveAllNamespaces(string xmlDocument);
}</code>

Beispiel-XML-Daten

Die folgenden XML-Daten werden als Beispiel verwendet:

<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>

Rekursive Funktion

Die Kernfunktion zum Entfernen von Namespaces ist rekursiv und funktioniert wie folgt:

<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>

Es iteriert die XML-Struktur, entfernt Namespaces und behält Elementinhalte und -attribute bei.

Anwendung

Mithilfe der zuvor definierten Schnittstelle und Funktion können Sie die Funktion zum Entfernen des XML-Namespace wie folgt aufrufen:

<code class="language-csharp">string result = RemoveAllNamespaces(xmlDocument);</code>

Ergebnisse ausgeben

Endergebnis nach dem Entfernen des Namespace aus dem Beispiel-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>

Fazit

Mit den XElement-Klassen und der rekursiven Funktionalität von C# können Sie Namespaces effektiv aus XML-Dokumenten entfernen und so die Manipulation und Verarbeitung von Daten erleichtern.

Das obige ist der detaillierte Inhalt vonWie entferne ich effizient XML-Namespaces in C#?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn