Supprimer l'espace de noms d'un élément XML est une tâche courante, et C# fournit une solution simple.
Tout d'abord, définissez une interface pour implémenter la fonctionnalité requise :
<code class="language-csharp">public interface IXMLUtils { string RemoveAllNamespaces(string xmlDocument); }</code>
Les données XML suivantes sont utilisées à titre d'exemple :
<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>
La fonction principale de suppression des espaces de noms est récursive et fonctionne comme suit :
<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>
Il itère la structure XML, supprime les espaces de noms et préserve le contenu et les attributs des éléments.
En utilisant l'interface et la fonction définies précédemment, vous pouvez appeler la fonction de suppression de l'espace de noms XML comme ceci :
<code class="language-csharp">string result = RemoveAllNamespaces(xmlDocument);</code>
Résultat final après suppression de l'espace de noms de l'exemple 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>
Grâce aux classes XElement
et aux fonctionnalités récursives de C#, vous pouvez supprimer efficacement les espaces de noms des documents XML, ce qui facilite la manipulation et le traitement des données.
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!