Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah LINQ ke XML dengan cekap menghuraikan dan memformat data XML bersarang?

Bagaimanakah LINQ ke XML dengan cekap menghuraikan dan memformat data XML bersarang?

Patricia Arquette
Patricia Arquetteasal
2025-01-30 05:01:08908semak imbas

How Can LINQ to XML Efficiently Parse and Format Nested XML Data?

linq ke xml: Pendekatan yang kuat untuk pengendalian data XML

.NET's LINQ ke XML menyediakan cara yang elegan dan cekap untuk memproses data XML. Mari kita periksa cara menghuraikan dan format struktur XML bersarang menggunakan C#. Pertimbangkan sampel XML ini:

<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>
Matlamat kami adalah untuk mengeluarkan data ini dalam format hierarki:

<code>A
  A1
  A2
B
  B1
  B2
C</code>

parsing dengan linq ke xml

kita mulakan dengan memuatkan XML menggunakan

. Kemudian, pertanyaan LINQ memilih XDocument.Load() nod dan atribut "nama" mereka: level1

<code class="language-csharp">XDocument xdoc = XDocument.Load("data.xml");

var level1Nodes = from level1 in xdoc.Descendants("level1")
                  select level1.Attribute("name").Value;</code>

Mengakses Node Level 2 bersarang

Untuk mengakses nod bersarang, kami menggunakan gelung bersarang. Di dalam gelung luar (melangkah melalui

), penapis pertanyaan Linq kedua level2 nod berdasarkan atribut "nama" ibu bapa mereka: level1Nodes level2

lekukan ("") membezakan tahap 2 dari nod tahap 1 dalam output.
<code class="language-csharp">foreach (var level1 in level1Nodes)
{
    Console.WriteLine(level1);
    var level2Nodes = from level2 in xdoc.Descendants("level2")
                      where level2.Parent.Attribute("name").Value == level1
                      select level2.Attribute("name").Value;
    foreach (var level2 in level2Nodes)
    {
        Console.WriteLine("  " + level2);
    }
}</code>

Lengkapkan C# code

inilah coretan kod yang lengkap dan berfungsi:

Ini menunjukkan kuasa dan kecekapan LINQ ke XML untuk parsing dan pemformatan struktur XML kompleks dalam code COST yang bersih dan boleh dibaca.
<code class="language-csharp">using System.Xml.Linq;

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

        var level1Nodes = from level1 in xdoc.Descendants("level1")
                          select level1.Attribute("name").Value;

        foreach (var level1 in level1Nodes)
        {
            Console.WriteLine(level1);
            var level2Nodes = from level2 in xdoc.Descendants("level2")
                              where level2.Parent.Attribute("name").Value == level1
                              select level2.Attribute("name").Value;
            foreach (var level2 in level2Nodes)
            {
                Console.WriteLine("  " + level2);
            }
        }
    }
}</code>

Atas ialah kandungan terperinci Bagaimanakah LINQ ke XML dengan cekap menghuraikan dan memformat data XML bersarang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn