我有这个XML文件
<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>
有人可以使用LINQ给我一个C#代码,这是打印此结果的最简单方法:
(如果是level2节点,请注意额外的空间)
A
A1
A2
B
B1
B2
C
目前我得到了这段代码
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...???
}
5 回答
试试这个 .
或者,如果您想要更通用的方法 - 即嵌套到“levelN”:
一些简单的旧
foreach
循环提供了一个干净的解决方案:以下是一些基于@bendewey和@dommer示例的完整工作示例 . 我需要稍微调整一下才能使它工作,但是如果另一个LINQ noob正在寻找工作示例,那么你去:
接下来:
这些都使用csc.exe版本4.0.30319.1在VS2010中编译和工作,并提供完全相同的输出 . 希望这些可以帮助那些正在寻找代码工作示例的人 .
编辑:添加了@eglasius的例子,因为它对我有用:
PS . 你必须在任何这些版本上使用.Root .