Pregunta

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

Dado el XML anterior, ¿cómo puedo iterar a través de cada elemento dentro del elemento 'Last Visitors', dado que cada grupo infantil es el mismo con solo valores diferentes?

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

Así que ahora he capturado el xelement que contiene todo lo que necesito. ¿Hay alguna forma de recorrer los elementos para obtener lo que necesito?

Tengo este objeto POCO llamado visitante cuyo único propósito es mantener la información necesaria.

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

Gracias de nuevo por la ayuda.

¿Fue útil?

Solución

Probablemente puedas hacer algo como esto en 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
                });

La única advertencia aquí es que no hice ninguna verificación nula.

Otros consejos

Simplemente haga una consulta LINQ para seleccionar todos los elementos como su 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 bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top