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
Lepaskan: 2025-01-30 05:01:08
asal
905 orang telah melayarinya

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

<code>A
  A1
  A2
B
  B1
  B2
C</code>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan