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 :
public interface IXMLUtils { string RemoveAllNamespaces(string xmlDocument); }
Les données XML suivantes sont utilisées à titre d'exemple :
<?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>
La fonction principale de suppression des espaces de noms est récursive et fonctionne comme suit :
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))); }
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 :
string result = RemoveAllNamespaces(xmlDocument);
Résultat final après suppression de l'espace de noms de l'exemple 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>
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!