2

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

上記の XML を考えると、各子グループが値が異なるだけで同じであることを考えると、「lastvisitors」要素内の各要素をどのように反復処理できますか?

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

これで、必要なものすべてを含む XElement をキャプチャできました。要素をループして必要なものを取得する方法はありますか?

必要な情報を保持することのみを目的とする Visitor という 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; }
    }
}

助けてくれてありがとう。

4

2 に答える 2

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

ここでの唯一の注意点は、nullチェックを行わなかったことです。

于 2010-10-25T23:18:56.987 に答える
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();
于 2010-10-25T23:08:01.933 に答える