¿Cómo recorrer un conjunto de xelements?
-
26-09-2019 - |
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.
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();