XDocument后代简单语句的后代

本文关键字:后代 语句 简单 XDocument | 更新日期: 2023-09-27 18:05:18

我有一个包含元素子元素的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值。任何想法吗?谢谢!

XDocument后代简单语句的后代

我想你的问题是指ElementsDescendants已经给了你想要的

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