Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Linq dapat memudahkan membaca dan memformat data XML dalam C#?
menyelaraskan pemprosesan data XML dengan C# linq
memanfaatkan LINQ dengan ketara memudahkan manipulasi data XML dalam C#. Contoh ini mempamerkan cara membaca dan memformat data XML dengan cekap untuk output.
1. XML Dokumen Memuatkan:
Proses bermula dengan memuatkan dokumen XML:
<code class="language-csharp">XDocument xdoc = XDocument.Load("data.xml");</code>
2. Mengekstrak Tahap 1 dan Tahap 2 Elemen:
Seterusnya, pertanyaan LINQ mengekstrak elemen "level1" dan anak -anak mereka yang berkaitan "level2":
<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>Pertanyaan ini memproyeksikan data ke dalam jenis tanpa nama yang mengandungi tajuk "Level1" dan koleksi nama "Level2". The
mengendalikan atribut null yang berpotensi dengan anggun. ?.Value
3. Memformat output:
Akhirnya, data yang diekstrak diformat dan output:
<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>Gelung ini melangkah melalui hasil, memajukan tajuk "Level1" dan nama "Level2" yang diinduksi ke
. StringBuilder
Contoh Lengkap:
inilah kod lengkap dan halus:
<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>Versi yang lebih baik ini menggabungkan pemeriksaan null untuk keteguhan dan menggunakan
untuk penyambungan rentetan yang cekap. Pendekatan LINQ menawarkan penyelesaian yang bersih dan boleh dibaca untuk menavigasi dan memproses data XML dalam C#. StringBuilder
Atas ialah kandungan terperinci Bagaimanakah Linq dapat memudahkan membaca dan memformat data XML dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!