【问题标题】:XDocument descendant of descendants simple statementXDocument 后代的后代简单语句
【发布时间】:2015-07-28 21:50:48
【问题描述】:

我有一个包含元素子元素的 XML 文件:

<Root>
     <Location>
         <DepartureBoundary>
            <DepartureBoundaryRadius>600</DepartureBoundaryRadius>
         </DepartureBoundary>
     </Location>
     <Location>
         <DepartureBoundary>
            <DepartureBoundaryRadius>600</DepartureBoundaryRadius>
         </DepartureBoundary>
     </Location>
</Root>

目前,我正在执行以下操作来访问 DepartureBoundaryRadius 的值:

XDocument locationsDoc = XDocument.Load("file.xml");
DepartureLocationBoundaryRadius = null;
List<DepartureBoundaryRadius> radiusList = new List<DepartureBoundaryRadius>();

foreach (XElement locationElement in locationsDoc.Descendants("Root"))
{
    foreach (XElement locationSubElement in locationsDoc.Descendants("Location"))
    {
        foreach (XElement departureElement in locationsDoc.Descendants("DepartureBoundary"))
        {
             DepartureLocationBoundaryRadius =  departureElement.Element("DepartureRadius").Value));
             radiusList.Add(DepartureLocationBoundaryRadius);
        }
    }
}

有没有更简单的方法来做到这一点?我宁愿在一行或一个语句中分配 DepartureLocationBoundaryRadius 的值——尤其是因为每个 Location 只有一个 DepartureBoundaryRadius 值。有什么想法吗?谢谢!

【问题讨论】:

    标签: c# .net-3.5 linq-to-xml


    【解决方案1】:

    我认为您的意思是 Elements 在您的问题中。 Descendants 已经给你想要的了

    var values = locationsDoc.Descendants("DepartureBoundaryRadius")
                              .Select(x => x.Value)
                              .ToList();
    

    【讨论】:

    • 当我将该语句放入代码时出现以下错误:错误 18 'System.Collections.Generic.IEnumerable' does not contain a definition for 'Select'并且找不到接受“System.Collections.Generic.IEnumerable”类型的第一个参数的扩展方法“Select”(您是否缺少 using 指令或程序集引用?)
    • 是的,解决了它。呃!
    【解决方案2】:
     var list = xdoc.Document.Descendants("DepartureBoundaryRadius").Select(x=>x.Value);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-28
      • 2012-01-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多