Maison >développement back-end >C++ >Comment LINQ peut-il simplifier la lecture et la mise en forme des données XML en 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:
<code class="language-csharp">XDocument xdoc = XDocument.Load("data.xml");</code>
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:
<code class="language-csharp">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) };</code>
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:
<code class="language-csharp">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());</code>
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é:
<code class="language-csharp">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<string>()) // Handle potential null children { output.AppendLine(" " + lv2); } } Console.WriteLine(output.ToString()); } }</code>
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!