2

我有一个看起来像这样的 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>

我需要在 Windows Phone 中使用 XDocument 选择“第三”行程元素,我该怎么做?

我试过像

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

如您所见,希望从第三个中获取所有腿部元素。

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

4

3 回答 3

6

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 是否允许您使用这些方法。如果没有,请评论并告诉我。

于 2013-05-28T17:23:46.090 回答
0

怎么样:

xdoc.Descendants("Trip")[2].Descendants("Leg")
于 2013-05-28T17:21:53.077 回答
0

使用 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 });
于 2013-05-28T17:25:02.540 回答