C# 从数字XDocument中选择位于的元素

C# 从数字XDocument中选择位于的元素,c#,xml,windows-phone-7,linq-to-xml,C#,Xml,Windows Phone 7,Linq To Xml,我得到了一个如下所示的XML <TripList xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://xmlopen.rejseplanen.dk/xml/rest/hafasRestTrip.xsd"> <Trip> <Leg name="til fods" type="WALK">...</Leg>

我得到了一个如下所示的XML

<TripList xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://xmlopen.rejseplanen.dk/xml/rest/hafasRestTrip.xsd">
   <Trip>
      <Leg name="til fods" type="WALK">...</Leg>
      <Leg name="Bus 61" type="BUS">...</Leg>
      <Leg name="til fods" type="WALK">...</Leg>
      <Leg name="Bus 52" type="BUS">...</Leg>
      <Leg name="til fods" type="WALK">...</Leg>
   </Trip>
   <Trip>
      <Leg name="til fods" type="WALK">...</Leg>
      <Leg name="Bus 61" type="BUS">...</Leg>
      <Leg name="til fods" type="WALK">...</Leg>
      <Leg name="Bus 52" type="BUS">...</Leg>
      <Leg name="til fods" type="WALK">...</Leg>
   </Trip>
   <Trip>
      <Leg name="til fods" type="WALK">...</Leg>
      <Leg name="Bus 191" type="BUS">...</Leg>
      <Leg name="til fods" type="WALK">...</Leg>
      <Leg name="Bus 152" type="BUS">...</Leg>
      <Leg name="til fods" type="WALK">...</Leg>
   </Trip>
   <Trip>
      <Leg name="til fods" type="WALK">...</Leg>
      <Leg name="Bus 31" type="TB">...</Leg>
      <Leg name="til fods" type="WALK">...</Leg>
   </Trip>
</TripList>
如您所见,我们希望从第三个中获取所有腿部元素

这可能是一个非常愚蠢的问题,但我在其他任何地方都找不到合适的答案。

怎么样:

xdoc.Descendants("Trip")[2].Descendants("Leg")

ElementAt
可能适合您

你要找的是

foreach (var Stykke in xdoc.Root.Elements("Trip").ElementAt(2).Elements("Leg"))
{
}
或者,如果您愿意,也可以使用
ToList
,然后使用索引器获取结果:

foreach (var Stykke in xdoc.Root.Elements("Trip").ToList()[2].Elements("Leg"))
{
}

我不确定WP7是否允许您使用这些方法。如果没有,请评论并告诉我。

使用LINQ to XML,您的查询如下

XDocument X = XDocument.Load(Path);
var ThirdTripElement = X.Element("TripList")
      .Elements("Trip")
      .ElementAt(2)
      .Elements("Leg")
      .Select(E => new { Name = E.Attribute("name").Value, 
                         Type = E.Attribute("type").Value });

我不熟悉WP7,但是你能使用XPath吗?看不出这有什么不同。。。子体还返回一个
IEnumerable
,并且
IEnumerable
没有索引器……我想补充一点,如果XmlDocument类是一个选项,我发现在需要离散地遍历XML文档时使用它会更令人满意。您如何知道他想要
选择什么?否则,相当好的答案。OP可以更改所选项目。我认为问题在于读取XML标记,问题在于获取索引中的元素。
XDocument X = XDocument.Load(Path);
var ThirdTripElement = X.Element("TripList")
      .Elements("Trip")
      .ElementAt(2)
      .Elements("Leg")
      .Select(E => new { Name = E.Attribute("name").Value, 
                         Type = E.Attribute("type").Value });