Maison > développement back-end > C++ > Comment puis-je supprimer efficacement les déclarations d'espace de noms XML en C# ?

Comment puis-je supprimer efficacement les déclarations d'espace de noms XML en C# ?

Linda Hamilton
Libérer: 2025-01-23 22:44:13
original
575 Les gens l'ont consulté

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

Supprimez efficacement les déclarations d'espace de noms XML en C#

Cet article fournit une solution complète pour supprimer les déclarations d'espace de noms des documents XML afin de simplifier la structure ou de répondre à des besoins spécifiques.

Question :

Vous souhaitez supprimer toutes les déclarations d'espace de noms du document XML pour simplifier sa structure ou répondre à des exigences spécifiques.

Interface :

<code class="language-csharp">public interface IXMLUtils
{
    string RemoveAllNamespaces(string xmlDocument);
}</code>
Copier après la connexion

Exemple 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>
Copier après la connexion

Résultat attendu :

<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>
Copier après la connexion

Solution :

Vous pouvez utiliser des fonctions récursives pour parcourir un document XML et supprimer les espaces de noms de tous les éléments. La fonction suit ces étapes :

  1. Pour les éléments feuilles (éléments sans enfants), créez un nouvel élément avec le nom local et la valeur de l'élément d'origine, et copiez tous les attributs.
  2. Pour les éléments avec des éléments enfants, créez un nouvel élément avec le nom local de l'élément d'origine et appelez la fonction de manière récursive pour chaque élément enfant.

Voici l'implémentation C# de la solution :

<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>
Copier après la connexion

Cette solution est complète et robuste et peut gérer efficacement les éléments foliaires et non foliaires. Il préserve également les valeurs et attributs d'origine des éléments XML, garantissant une suppression fiable et précise des espaces de noms.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal