2010-10-25 4 views
2

http://www.dreamincode.net/forums/xml.php?showuser=335389Как выполнить цикл XElements?

Учитывая выше XML, как я могу перебирать каждый элемент внутри элемента «lastvisitors», учитывая, что каждый ребенок группа совпадает только с разными значениями?

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

Итак, теперь я захватил XElement, содержащий все, что мне нужно. Есть ли способ перебрать элементы, чтобы получить то, что мне нужно?

У меня есть этот объект 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; } 
    } 
} 

Еще раз спасибо за помощь.

ответ

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 
       }); 

Единственное ограничение в том, что я не делал каких-либо нулевой проверки.

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(); 
Смежные вопросы