Pergunta

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

Dado o XML acima, como posso iterar através de cada elemento dentro do elemento 'LastVisitors', já que cada grupo filho é o mesmo com apenas valores diferentes?

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

Então agora eu capturei o Xelement contendo tudo o que preciso. Existe uma maneira de percorrer os elementos para obter o que eu preciso?

Eu tenho esse objeto POCO chamado visitante cujo único objetivo é manter as informações necessárias.

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

Mais uma vez obrigado pela ajuda.

Foi útil?

Solução

Você provavelmente pode simplesmente fazer algo assim em 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
                });

A única advertência aqui é que eu não fiz nenhuma verificação nula.

Outras dicas

Basta fazer uma consulta LINQ para selecionar todos os elementos como seu objeto.

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();
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top