从数字XDocument中选择一个元素

Jaz*_*rix 1 c# xml linq-to-xml windows-phone-7

我有一个看起来像这样的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>
Run Code Online (Sandbox Code Playgroud)

我需要在Windows Phone中使用XDocument选择“第三”行程元素,我将如何处理?

我尝试过类似的东西

foreach (var Stykke in xdoc.Root.Elements("Trip")[2].Elements("Leg"))
{
}
Run Code Online (Sandbox Code Playgroud)

如您所见,想从第三个元素中获取所有Leg元素。

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

It'*_*ie. 5

ElementAt 可以为您工作。

您正在寻找的是

foreach (var Stykke in xdoc.Root.Elements("Trip").ElementAt(2).Elements("Leg"))
{
}
Run Code Online (Sandbox Code Playgroud)

或者,如果您愿意,也可以使用ToList索引器,然后使用该结果。

foreach (var Stykke in xdoc.Root.Elements("Trip").ToList()[2].Elements("Leg"))
{
}
Run Code Online (Sandbox Code Playgroud)

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