我得到了这个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节点,则需要额外的空间)
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...??? }
尝试这个。
using System.Xml.Linq; void Main() { StringBuilder result = new StringBuilder(); //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); } Console.WriteLine(result); }