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; }
}
}
再次感谢您的帮助。
答案 0 :(得分:5)
您可以在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
});
这里唯一需要注意的是我没有做任何空检查。
答案 1 :(得分: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();