Maison > développement back-end > C++ > Comment LINQ peut-il simplifier l'analyse de données XML et la sortie hiérarchique en C #?

Comment LINQ peut-il simplifier l'analyse de données XML et la sortie hiérarchique en C #?

Susan Sarandon
Libérer: 2025-01-30 05:06:11
original
589 Les gens l'ont consulté

How Can LINQ Simplify XML Data Parsing and Hierarchical Output in C#?

Tire en tirant LINQ pour la gestion des données XML rationalisée dans C #

C # Les développeurs rencontrent souvent des défis de traitement des données XML. Linq offre une solution élégante pour l'analyse XML efficace et la sortie structurée. Illustrons cela avec un exemple de fichier XML:

<code class="language-xml"><root><level1 name="A"><level2 name="A1"></level2><level2 name="A2"></level2></level1><level1 name="B"><level2 name="B1"></level2><level2 name="B2"></level2></level1><level1 name="C"></level1></root></code>
Copier après la connexion

Notre objectif est de générer une représentation hiérarchique de ces données:

<code>A
  A1
  A2
B
  B1
  B2
C</code>
Copier après la connexion

Une solution basée sur Linq

Le code C # suivant utilise LINQ pour atteindre cette sortie hiérarchique:

<code class="language-csharp">using System.Xml.Linq;
using System.Text;

public class XmlParser
{
    public static void Main(string[] args)
    {
        StringBuilder output = new StringBuilder();

        // Load the XML document
        XDocument xmlDoc = XDocument.Load("data.xml");

        // LINQ query to extract hierarchical data
        var level1Nodes = from level1 in xmlDoc.Descendants("level1")
                          select new
                          {
                              Name = level1.Attribute("name")?.Value,
                              Level2Nodes = level1.Descendants("level2").Select(level2 => level2.Attribute("name")?.Value)
                          };

        // Format and output the data
        foreach (var level1 in level1Nodes)
        {
            output.AppendLine(level1.Name);
            foreach (var level2 in level1.Level2Nodes)
            {
                output.AppendLine("  " + level2);
            }
        }

        Console.WriteLine(output.ToString());
    }
}</code>
Copier après la connexion

Débarquement du code

  • Le code commence par charger le fichier XML à l'aide de XDocument.Load.
  • Une requête LINQ sélectionne efficacement les nœuds level1 et leurs nœuds enfants level2 correspondants. Le ?.Value gère les valeurs d'attribut nul potentielles gracieusement.
  • Les résultats sont ensuite itérés et la structure hiérarchique est construite en utilisant la manipulation de la chaîne, assurant une appropriation appropriée.

Cela montre comment LINQ simplifie l'analyse XML et fournit un moyen concis de générer la sortie hiérarchique souhaitée en C #. L'utilisation de StringBuilder optimise la concaténation des cordes pour améliorer les performances.

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