Heim > Backend-Entwicklung > C++ > Wie kann LINQ XML effizient verschachtelte XML -Daten effizient analysieren und formatieren?

Wie kann LINQ XML effizient verschachtelte XML -Daten effizient analysieren und formatieren?

Patricia Arquette
Freigeben: 2025-01-30 05:01:08
Original
905 Leute haben es durchsucht

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

linq zu XML: Ein leistungsstarker Ansatz zur XML -Datenhandhabung

.NETs LINQ zu XML bietet eine elegante und effiziente Möglichkeit, XML -Daten zu verarbeiten. Lassen Sie uns untersuchen, wie Sie mit C#verschachtelte XML -Strukturen analysieren und formatieren. Betrachten Sie dieses Beispiel XML:

<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>
Nach dem Login kopieren

Unser Ziel ist es, diese Daten in einem hierarchischen Format auszugeben:

<code>A
  A1
  A2
B
  B1
  B2
C</code>
Nach dem Login kopieren

analysieren mit linq an xml

wir beginnen damit, die XML mit XDocument.Load() zu laden. Anschließend wählt eine Linq -Abfrage die level1 -Knoten und ihre "Namensattribute" aus:

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

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

Zugriff auf verschriebene Stufe 2 -Knoten

Um auf die verschachtelten level2 -Knoten zuzugreifen, verwenden wir eine verschachtelte Schleife. In der äußeren Schleife (durch level1Nodes iteriert) filtert ein zweites Linq -Query -Filter level2 -Knoten basierend auf dem "Name" des übergeordneten "Namens":

<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>
Nach dem Login kopieren

Die Eindrücke ("") unterscheidet Level 2 von Stufe 1 -Knoten im Ausgang.

komplett C# Code

Hier ist der vollständige Funktionscode -Snippet:

<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>
Nach dem Login kopieren

Dies zeigt die Leistung und Effizienz von Linq zu XML für das Parsen und Formatieren von komplexen XML -Strukturen in einer sauberen und lesbaren C# -Codebasis.

Das obige ist der detaillierte Inhalt vonWie kann LINQ XML effizient verschachtelte XML -Daten effizient analysieren und formatieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage