Maison > développement back-end > C++ > Comment supprimer efficacement les espaces de noms des documents XML à l'aide de C# ?

Comment supprimer efficacement les espaces de noms des documents XML à l'aide de C# ?

Linda Hamilton
Libérer: 2025-01-23 22:31:10
original
704 Les gens l'ont consulté

How to Efficiently Remove Namespaces from XML Documents Using C#?

Effacez facilement les espaces de noms dans les documents XML à l'aide de C#

Dans le traitement XML, les espaces de noms deviennent souvent un casse-tête, perturbant les données comme des invités non invités. La suppression de ces espaces de noms redondants peut s'avérer fastidieuse, mais grâce à la puissance de C# sur .NET 3.5 SP1, vous pouvez facilement dire adieu aux espaces de noms.

Pour vous aider à mettre en œuvre le nettoyage des espaces de noms des documents XML, nous proposons une solution simple et efficace. La fonction RemoveAllNamespaces() basée sur l'interface fournit un moyen simple et élégant de supprimer les espaces de noms des documents XML.

RemoveAllNamespaces()Explication détaillée des fonctions

Le cœur de la solution est la fonction compacte RemoveAllNamespaces(), qui reçoit un document XML en entrée et supprime tous les espaces de noms :

<code class="language-csharp">public static string RemoveAllNamespaces(string xmlDocument)
{
    XElement xmlDocumentWithoutNs = RemoveAllNamespaces(XElement.Parse(xmlDocument));

    return xmlDocumentWithoutNs.ToString();
}</code>
Copier après la connexion

La fonction récursive de base sous-jacente RemoveAllNamespaces() gère le gros du travail :

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

Exemples XML et résultats

Pour illustrer la puissance de cette solution, regardons un exemple XML contenant des espaces de noms :

<code class="language-xml"><?xml version="1.0" encoding="utf-16"?>
<ArrayOfInserts xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <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" />
    <type3 xmlns="http://schema.peters.com/doc_353/1/Types">
      <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

Après avoir appelé la fonction RemoveAllNamespaces(), le document XML sera converti et tous les espaces de noms seront supprimés :

<code class="language-xml"><?xml version="1.0" encoding="utf-16"?>
<ArrayOfInserts>
  <insert>
    <offer>0174587</offer>
    <type2>014717</type2>
    <supplier>019172</supplier>
    <id_frame />
    <type3>
      <type2 />
      <main>false</main>
    </type3>
    <status>Some state</status>
  </insert>
</ArrayOfInserts></code>
Copier après la connexion

Résumé

Grâce à notre solution RemoveAllNamespaces(), vous disposez désormais d'un moyen propre et fiable de supprimer les espaces de noms des documents XML C#. Que vous ayez affaire à des éléments uniques ou à des hiérarchies complexes, notre code garantit que vos données XML sont sans espace 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