Maison >développement back-end >C++ >Comment supprimer efficacement les espaces de noms des documents XML à l'aide de 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>
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>
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>
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>
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!