在List<递归读取XML树结构; T>带着孩子名单< T> [英] Read a XML tree structure recursively in a List<T> with children lists<T>
本文介绍了在List<递归读取XML树结构; T>带着孩子名单< T>的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个这样的XML:
和我有一个属性Name会员类
我怎样才能阅读每单位及其子单位分成多个通用列表<单元>
可又有小孩列表<单元>
在递归的方式采用最新的.NET技术
<根和GT;
<单位名称=Test1的>
<单位名称=TEST11/>
<单位名称=TEST12>
<单位名称=Test21/>
<单位名称=Test22/>
<单位名称=Test23>
<单位名称=Test31/>
<单位名称=Test32/>
<单位名称=Test33/>
< /单元>
<单位名称=Test24/>
< /单元>
< /单位>
<单位名称=Test2的/>
<! - ... - >
<单位名称=Test3的/>
<! - ... - >
<单位名称=TEST4/>
< /根>
解决方案
这将做到这一点,使用普通的递归:
公共类股
{
公共字符串名称{;组; }
公开名单<单元>儿童{搞定;组; }
}
类节目
{
公共静态无效的主要()
{
的XDocument DOC = XDocument.Load(测试。 XML);
名单,LT;单元>单位= LoadUnits(doc.Descendants(单位)元素(单位));
}
公共静态列表<单元> LoadUnits(IEnumerable的<的XElement>单位)
{
返回units.Select(X =>新的单位()
{名称= x.Attribute(姓名)值,
儿童= LoadUnits(x.Elements(单元))
})了ToList();
}
}
I have an XML like this:
And I have a Member class with property Name.
How can I read every Unit and its children Units into multiple generic List<Unit>
which can have again children List<Unit>
in a recursively way using latest .NET technology ?
<Root>
<Units Name="Test1">
<Unit Name="Test11" />
<Unit Name="Test12">
<Unit Name="Test21" />
<Unit Name="Test22" />
<Unit Name="Test23">
<Unit Name="Test31" />
<Unit Name="Test32" />
<Unit Name="Test33" />
</Unit>
<Unit Name="Test24" />
</Unit>
</Units>
<Units Name="Test2" />
<!-- ... -->
<Units Name="Test3" />
<!-- ... -->
<Units Name="Test4" />
</Root>
解决方案
This would do it, using plain recursion:
public class Unit
{
public string Name { get; set; }
public List<Unit> Children { get; set; }
}
class Program
{
public static void Main()
{
XDocument doc = XDocument.Load("test.xml");
List<Unit> units = LoadUnits(doc.Descendants("Units").Elements("Unit"));
}
public static List<Unit> LoadUnits(IEnumerable<XElement> units)
{
return units.Select( x=> new Unit()
{ Name = x.Attribute("Name").Value,
Children = LoadUnits(x.Elements("Unit"))
}).ToList();
}
}
这篇关于在List<递归读取XML树结构; T>带着孩子名单< T>的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文