Maison > développement back-end > C++ > Comment LINQ peut-il simplifier la lecture et la mise en forme des données XML en C #?

Comment LINQ peut-il simplifier la lecture et la mise en forme des données XML en C #?

DDD
Libérer: 2025-01-30 05:16:08
original
921 Les gens l'ont consulté

How Can LINQ Simplify Reading and Formatting XML Data in C#?

rationaliser le traitement des données XML avec C # linq

Tirer la mise à jour de Linq simplifie considérablement la manipulation des données XML en C #. Cet exemple présente comment lire et formater efficacement les données XML pour la sortie.

1. Chargement du document XML:

Le processus commence par charger le document XML:

XDocument xdoc = XDocument.Load("data.xml");
Copier après la connexion

2. Extraction des éléments de niveau 1 et de niveau 2:

Ensuite, une requête LINQ extrait les éléments "niveau1" et leurs enfants "niveau 2" associés:

var lv1Elements = from lv1 in xdoc.Descendants("level1")
                  select new
                  {
                      Header = lv1.Attribute("name")?.Value,
                      Children = lv1.Descendants("level2").Select(lv2 => lv2.Attribute("name")?.Value)
                  };
Copier après la connexion

Cette requête projette les données dans un type anonyme contenant l'en-tête "Level1" et une collection de noms "niveau2". Le ?.Value gère gracieusement les attributs nuls potentiels.

3. Formatage de la sortie:

Enfin, les données extraites sont formatées et sorties:

StringBuilder output = new StringBuilder();
foreach (var lv1 in lv1Elements)
{
    output.AppendLine(lv1.Header);
    foreach (var lv2 in lv1.Children)
    {
        output.AppendLine("     " + lv2);
    }
}

Console.WriteLine(output.ToString());
Copier après la connexion

Cette boucle itère à travers les résultats, ajoutant l'en-tête "niveau1" et les noms "de niveau 2" en retrait aux StringBuilder.

Exemple complet:

Voici le code complet et raffiné:

using System.Xml.Linq;
using System.Text;

public class XmlProcessor
{
    public static void Main(string[] args)
    {
        StringBuilder output = new StringBuilder();
        XDocument xdoc = XDocument.Load("data.xml");

        var lv1Elements = from lv1 in xdoc.Descendants("level1")
                          select new
                          {
                              Header = lv1.Attribute("name")?.Value,
                              Children = lv1.Descendants("level2").Select(lv2 => lv2.Attribute("name")?.Value)
                          };

        foreach (var lv1 in lv1Elements)
        {
            output.AppendLine(lv1.Header ?? "N/A"); // Handle potential null header
            foreach (var lv2 in lv1.Children ?? Enumerable.Empty()) // Handle potential null children
            {
                output.AppendLine("     " + lv2);
            }
        }

        Console.WriteLine(output.ToString());
    }
}
Copier après la connexion

Cette version améliorée intègre des vérifications nuls pour la robustesse et utilise un StringBuilder pour une concaténation de chaîne efficace. L'approche LINQ offre une solution propre et lisible pour naviguer et traiter les données XML en C #.

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!

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal