LINQ读取XML [英] LINQ to read XML
本文介绍了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屋!
查看全文