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

现在,我用 xlinq 读取了这个 xml,如下所示:

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



    }

现在我想为每个项目填写一个列表,所有数据(名字、姓氏、姓名、日期)都必须存在。

我认为收益回报必须解决我的问题,但实际上我并不清楚它是如何工作的。(我想实现它)

谢谢

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 回答