如何循环遍历一组XElements?

3

http://www.dreamincode.net/forums/xml.php?showuser=335389

上述XML如何迭代'lastvisitors'元素中的每个元素,考虑到每个子组都相同,只是值不同?

//Load latest visitors.
var visitorXML = xml.Element("ipb").Element("profile").Element("latestvisitors");

现在我已经获取了包含所有所需内容的XElement。是否有一种方法可以遍历这些元素以获取所需内容?

我有一个名为Visitor的POCO对象,其唯一目的是保存必要信息。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace SharpDIC.Entities
{
    public class Visitor
    {
        public string ID { get; set; }
        public string Name { get; set; }
        public string Url { get; set; }
        public string Photo { get; set; }
        public string Visited { get; set; }
    }
}

再次感谢你的帮助。

2个回答

6
您可以在Linq中尝试类似以下的操作:
XDocument xml = XDocument.Parse(xmlString);
var visitors = (from visitor in xml.Descendants("latestvisitors").Descendants("user")
                select new Visitor() {
                  ID = visitor.Element("id").Value,
                  Name = visitor.Element("name").Value,
                  Url = visitor.Element("url").Value,
                  Photo = visitor.Element("photo").Value,
                  Visited = visitor.Element("visited").Value
                });

这里唯一需要注意的是我没有进行任何空值检查。

2

只需使用linq查询将所有元素选择为您的对象。

var visitors = (from v in xml.Element("ipb").Element("profile")
                             .Element("latestvisitors").Elements()
               select new Visitor {
                   ID = (string)v.Element("id"),
                   Name = (string)v.Element("name"),

               }).ToList();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接