如何获取XML中的所有子元素?

时间:2010-07-05 23:25:57

标签: c# .net linq-to-xml

来自此XML响应:http://www.dreamincode.net/forums/xml.php?showuser=335389

我想抓住所有用户朋友。我需要从朋友那里获取所有信息。通常在我得到帮助的情况下,我会使用唯一的ID来抓取每个,但由于每个用户没有相同的朋友,因此它必须是动态的,我不能硬编码任何东西。

有人请分享一些XDocument魔法吗?

2 个答案:

答案 0 :(得分:2)

您可以从XML文档中获取<user>元素中的所有<friends>元素,如下所示:

var url = "http://www.dreamincode.net/forums/xml.php?showuser=335389";
var doc = XDocument.Load(url);
var friends = doc.Element("ipb").Element("profile")
                 .Element("friends").Elements("user");

// Or if you don't want to specify the whole path and you know that
// there is only a single element named <friends>:
var friends = doc.Descendant("friends").Elements("user");

然后您可以使用LINQ来处理集合。例如,要创建一个包含所有frined的名称的IEnumerable<string>,您可以写:

var names = from fr in friends 
            select fr.Element("name").Value;

如果您需要唯一ID,您可以以类似的方式阅读<id>元素(如果它是整数,您也可以使用Int32.Parse解析它,例如...)

答案 1 :(得分:0)

您可以使用XPath查询

http://www.w3schools.com/xpath/xpath_examples.asp

示例使用JScript,但.NET也支持它