首页 新闻 搜索 专区 学院

Linq To Xml查询指定父级下面的所有子级。

0
悬赏园豆:50 [已解决问题] 解决于 2010-07-13 08:03
大气象
<?xml version="1.0" encoding="utf-8" ?>
<root>
<room>
<id>1</id>
<people>
<name>张三1</name>
</people>
<people>
<name>张三2</name>
</people>
</room>
<room>
<id>2</id>
<people>
<name>李四1</name>
</people>
<people>
<name>李四2</name>
</people>
</room>
</root>

 

类似的sql语句:select all [people] from XmlFile where room.id=1
就是说查询room的id=1下面的所有people元素。
最好采用下面的语法:

大气象
xDocument.Descendants("people").Select(
p
=>new People//
{
Name
= p.Element("name").Value
}).Where(p
=>p.Parent.id = 1);
//如果从子级判断父级不行,可以从父级找子级。
xDocument.Descendants("room").Select(
//在这里遍历子级
).Where(id=1);

我对Linq To Xml太陌生,大概表达一下意思,希望高手能看懂。
有时间彻底学一下,先偷懒请高手解答这个问题。

大气象的主页 大气象 | 初学一级 | 园豆:79
提问于:2010-07-12 15:14
< >
分享
最佳答案
0
string xml = @"<?xml version=""1.0"" encoding=""utf-8"" ?><root><room><id>1</id><people><name>张三1</name></people><people><name>张三2</name></people></room><room><id>2</id><people><name>李四1</name></people><people><name>李四2</name></people></room></root>";
var obj
= XDocument.Parse(xml).Descendants("room").Where(w => w.Elements("id").Any(a => (int)a == 1)).SelectMany(s => s.Elements("people"));
foreach (var info in obj) Msg.Write(info + "<br />");
收获园豆:50
熊哥 | 小虾三级 |园豆:682 | 2010-07-12 23:06
朋友,你真是这方面的专家呀,赞。
大气象 | 园豆:79 (初学一级) | 2010-07-13 08:03
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册