首頁 >後端開發 >C++ >LINQ如何簡化C#中的XML數據解析和分層輸出?

LINQ如何簡化C#中的XML數據解析和分層輸出?

Susan Sarandon
Susan Sarandon原創
2025-01-30 05:06:11591瀏覽

How Can LINQ Simplify XML Data Parsing and Hierarchical Output in C#?

在C#

> 中,利用LINQ的LINQ

>

c#開發人員經常遇到XML數據處理挑戰。 LINQ提供了一種優雅的解決方案,用於有效的XML解析和結構化輸出。讓我們用一個示例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>

我們的目標是生成此數據的層次表示:>

基於LINQ的解決方案
<code>A
  A1
  A2
B
  B1
  B2
C</code>

> 以下C#代碼利用LINQ實現此層次結構輸出:

代碼崩潰
<code class="language-csharp">using System.Xml.Linq;
using System.Text;

public class XmlParser
{
    public static void Main(string[] args)
    {
        StringBuilder output = new StringBuilder();

        // Load the XML document
        XDocument xmlDoc = XDocument.Load("data.xml");

        // LINQ query to extract hierarchical data
        var level1Nodes = from level1 in xmlDoc.Descendants("level1")
                          select new
                          {
                              Name = level1.Attribute("name")?.Value,
                              Level2Nodes = level1.Descendants("level2").Select(level2 => level2.Attribute("name")?.Value)
                          };

        // Format and output the data
        foreach (var level1 in level1Nodes)
        {
            output.AppendLine(level1.Name);
            foreach (var level2 in level1.Level2Nodes)
            {
                output.AppendLine("  " + level2);
            }
        }

        Console.WriteLine(output.ToString());
    }
}</code>

代碼開始使用

    linq查詢有效地選擇子節點。 XDocument.Load優雅地處理潛在的null屬性值。
  • > 然後將結果迭代,並使用字符串操縱構建層次結構,以確保正確的凹痕。 level1 level2>這說明了LINQ如何簡化XML解析,並提供了一種在C#中生成所需層次輸出的簡潔方法。 使用?.Value優化字符串串聯以提高性能。

以上是LINQ如何簡化C#中的XML數據解析和分層輸出?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn