如何使用Linq To XML获取多个元素并以不同方式存储它们?

时间:2015-11-17 14:34:24

标签: c# linq linq-to-xml

<MainData id="1" >
<Info>
<Date>2015-06-08 15:00:00</Date>
</Info>
<Data DataRef="uu91"/>
<Data DataRef="uu92">
</Data>
</MainData>

我有一个xml文件,我想把两个数据元素存储到两个不同的变量中,所以当我做同样的值时就出来了。当我收到这两个值时,我想获得ID,日期......

var data = from item in retreiveOptaHomeFixturesXml.Descendants("MainData")
                   select new
                   {
                       ID = item.Attribute("id").Value,
                       Date = item.Element("Info").Element("Date").Value,
                       DataRef1 = item.Element("Data").Attribute("DataRef").Value,
                       Dataref2 = item.Element("Data").Attribute("DataRef").Value,
                   };

1 个答案:

答案 0 :(得分:0)

理想情况下,您应该将DataRef提取到列表中,因为在每个MainData中,您将拥有多个具有DataRef属性的数据。你可以这样做: -

 var data = from item in x1.Descendants("MainData")
            let dataNodes = item.Elements("Data")
            select new
                  {
                     ID = item.Attribute("id").Value,
                     Date = item.Element("Info").Element("Date").Value,
                     DataRef1Ref2 = dataNodes.Select(x => (string)x.Attribute("DataRef"))
                                             .ToList()
                  };