Heim >Backend-Entwicklung >C++ >Wie kann ich XML-Daten mit XmlReader in C# effizient lesen und verarbeiten?

Wie kann ich XML-Daten mit XmlReader in C# effizient lesen und verarbeiten?

Patricia Arquette
Patricia ArquetteOriginal
2025-01-22 07:27:10514Durchsuche

How Can I Efficiently Read and Process XML Data Using XmlReader in C#?

Optimierung der XML-Analyse in C# mit XmlReader

Für eine effiziente XML-Dokumentverarbeitung in C# wird ein strukturierter Ansatz mit separaten Klassen für verschiedene Knoten empfohlen. Dieses Beispiel konzentriert sich auf das Lesen von Account-Daten, mit einer dedizierten AccountBase-Klasse zur Verarbeitung von Eigenschaften wie NameOfKin. Die Herausforderung, zum Element StatementsAvailable zu navigieren, wird mit XmlReader.Skip().

elegant gelöst

Die AccountBase-Klasse enthält den folgenden Codeausschnitt:

<code class="language-csharp">while (reader.Read())
{
    if (reader.NodeType == XmlNodeType.Element)
    {
        if (reader.Name == "StatementsAvailable")
        {
            reader.Skip(); // Efficiently skips the StatementsAvailable element and its children
            ProcessStatements(reader);
            break; // Moves to the next Account element
        }
    }
}</code>

Die ProcessStatements()-Methode wiederum verwendet eine Statement-Klasse, um einzelne Anweisungseigenschaften zu analysieren. Dieser modulare Aufbau lässt sich nahtlos auf andere XML-Unterelemente erweitern.

Während XmlReader sich durch effizientes Streaming auszeichnet, bietet LINQ to XML eine benutzerfreundlichere Syntax für die XML-Manipulation. Ziehen Sie für große XML-Dateien einen hybriden Ansatz in Betracht: Streamen Sie die Daten in überschaubaren Blöcken mit XmlReader und verarbeiten Sie diese Blöcke dann mit dem bequemeren LINQ to XML.

Verbesserte Codestruktur mit Nested-Loop-Behandlung:

Dieses verfeinerte Codebeispiel vereinfacht die verschachtelte Leseschleife und vermeidet mögliche Fehler beim Lesen über das erwartete Element hinaus:

<code class="language-csharp">using (XmlReader reader = XmlReader.Create(inputUrl))
{
    reader.ReadToDescendant("ApplicationPool"); // Directly navigate to the root element

    while (reader.Read())
    {
        if (reader.NodeType == XmlNodeType.Element && reader.Name == "Account")
        {
            AccountBase account = new AccountBase(reader);
            reader.ReadToFollowing("StatementsAvailable"); // Efficiently finds StatementsAvailable
            reader.Skip();
            account.ProcessStatements(reader);
        }
    }
}</code>

Diese Verbesserung rationalisiert den Prozess und macht den Code sauberer und robuster. Die direkte Navigation zum Wurzelelement und die Verwendung von ReadToFollowing verbessern die Effizienz und Lesbarkeit.

Das obige ist der detaillierte Inhalt vonWie kann ich XML-Daten mit XmlReader in C# effizient lesen und verarbeiten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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