0

ショットに問題があります...要素のリストに保存したいxmlファイルがあります。

別のデータソースによって指定された別のパターンに従うために、このリストをフラットにしたいと思います。

ここにxmlのサンプルがあります

   <?xml version="1.0" encoding="utf-8" ?>    
   <Actors>
    <Actor FirstName="Will" LastName="Smith">
      <Movie name="Men in Black" Date="1999"/>
      <Movie name="Wild wild west" Date="1999"/>
      <Movie name="Ali" Date="2002"/>
    </Actor>
    <Actor FirstName="Jason" LastName="Statham">
     <Movie name="The Transporter" Date="2002"/>   
     <Movie name="Revolver" Date="2005"/>
     <Movie name="The Bank Job" Date="2008"/>
     <Movie name="Transporter 3" Date="2008"/>
    </Actor> 
 </Actors>

次に、私のオブジェクトを作成します

public class Actors
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Name { get; set; }
    public string Date { get; set; }
}

そして今、この xml を xlinq で次のように読み取ります。

        private static void Read(string fileName)
    {
        XDocument testDoc = XDocument.Load(fileName);
        var reader = from c in testDoc.Root.Elements()
                     select c;


        var list = reader.ToList();



    }

ここで、各アイテムのリストとデータを入力したいと思います。すべてのデータ (FirstName、LastName、Name、Date) が存在する必要があります。

Yield return は私の問題を解決するはずだと思いますが、実際にはそれがどのように機能するのか明確に理解していません。(そして私はそれを実装したいと思います)

ありがとう

4

2 に答える 2

1

私はあなたが単に欲しいと思います

List<Actors> actors = (from movie in XDocument.Load(fileName).Descendants("Movie")
  select new Actors() {
    FirstName = (string)movie.Parent.Attribute("FirstName"),
    LastName = (string)movie.Parent.Attribute("LastName")
    Name = (string)movie.Attribute("name"),
    Date = (string)movie.Attribute("Date")
 }).ToList();
于 2012-05-15T10:29:33.303 に答える
0

このクエリを使用する

var reader = from a in testDoc.Root.Descendants("Actor")
             from m in a.Descendants("Movie")
             select new Actors
             {
                FirstName = a.Attribute("FirstName").Value,
                LastName = a.Attribute("LastName").Value,
                Name = m.Attribute("name").Value,
                Date = m.Attribute("Date").Value
             };
于 2012-05-15T10:40:46.803 に答える