首页 > 后端开发 > C++ > LINQ如何简化C#中的XML数据解析和分层输出?

LINQ如何简化C#中的XML数据解析和分层输出?

Susan Sarandon
发布: 2025-01-30 05:06:11
原创
589 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板