LINQ读取XML [英] LINQ to read XML

查看:97
本文介绍了LINQ读取XML的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我得到这个XML文件

 <根和GT;
    < 1级名=A>
        < 2级NAME =A1/>
        < 2级NAME =A2/>
    < / 1级>
    < 1级名=B>
        < 2级NAME =B1/>
        < 2级NAME =B2/>
    < / 1级>
    < 1级名=C/>
< /根>

能有人给我使用LINQ,打印此结果的最简单的方法是C#code:结果
(注额外的空间,如果它是一个2级节点)

  A
  A1
  A2

  B1
  B2
C

目前我得到这个code

  XDOC的XDocument = XDocument.Load(data.xml中));
在xdoc.Descendants从LV1 VAR lv1s =(1级)
           选择lv1.Attribute(name)的价值。的foreach(在lv1s VAR LV1)
{
    result.AppendLine(LV1​​);    从LV2 XDOC VAR lv2s = ...?
}


解决方案

试试这个。

  //加载XML
XDOC的XDocument = XDocument.Load(data.xml中);//运行查询
在xdoc.Descendants从LV1 VAR lv1s =(1级)
           选择新{
               标题= lv1.Attribute(名)。价值,
               儿童= lv1.Descendants(2级)
           };//循环遍历结果
的foreach(在lv1s VAR LV1){
        result.AppendLine(lv1.Header);
        的foreach(在lv1.Children VAR LV2)
             result.AppendLine(+ lv2.Attribute(name)的值。);
}

I got this XML file

<root>
    <level1 name="A">
        <level2 name="A1" />
        <level2 name="A2" />
    </level1>
    <level1 name="B">
        <level2 name="B1" />
        <level2 name="B2" />
    </level1>
    <level1 name="C" />
</root>

Could someone give me a C# code using LINQ, the simplest way to print this result:
(Note the extra space if it is a level2 node)

A
  A1
  A2
B
  B1
  B2
C

Currently I got this code

XDocument xdoc = XDocument.Load("data.xml"));
var lv1s = from lv1 in xdoc.Descendants("level1")
           select lv1.Attribute("name").Value;

foreach (var lv1 in lv1s)
{
    result.AppendLine(lv1);

    var lv2s = from lv2 in xdoc...???
}

解决方案

Try this.

//Load xml
XDocument xdoc = XDocument.Load("data.xml");

//Run query
var lv1s = from lv1 in xdoc.Descendants("level1")
           select new { 
               Header = lv1.Attribute("name").Value,
               Children = lv1.Descendants("level2")
           };

//Loop through results
foreach (var lv1 in lv1s){
        result.AppendLine(lv1.Header);
        foreach(var lv2 in lv1.Children)
             result.AppendLine("     " + lv2.Attribute("name").Value);
}

这篇关于LINQ读取XML的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆