سؤال

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

بالنظر إلى XML أعلاه ، كيف يمكنني التكرار من خلال كل عنصر داخل عنصر "Last Visitors" ، بالنظر إلى أن كل مجموعة طفل هي نفسها مع قيم مختلفة فقط؟

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

شكرا مرة أخرى للمساعدة.

هل كانت مفيدة؟

المحلول

ربما يمكنك فعل شيء مثل هذا في 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
                });

التحذير الوحيد هنا هو أنني لم أفعل أي فحص فارغ.

نصائح أخرى

ما عليك سوى القيام باستعلام 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();
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top