2013-05-28 66 views
1

我看起來像這樣的在從衆多選擇元素的XDocument

<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元素的XML,我會如何呢?

我試過的東西一樣

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

正如你所看到的,想獲得從第三的所有支柱元件。

這可能是一個非常愚蠢的問題,但我無法在其他地方找到適合我的問題的答案。

+0

我不熟悉的WP7,但你可以使用XPath? – Mzf

回答

4

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讓你使用這些方法。如果沒有,請評論並告訴我。

0

如何:

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

看不出這有什麼不同...後代還返回一個IEnumerable 'IEnumerable '沒有索引器... –

+0

我會補充說,如果XmlDocument類是一個選項,我發現當我需要離散地遍歷XML文檔時,使用它會更加令人滿意。 – DonBoitnott

0

使用LINQ到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 }); 
+0

你怎麼知道他想要'選擇'?否則一個很好的答案。 –

+0

OP可以更改選擇項目。我認爲問題在於閱讀XML標籤。 – arunlalam

+0

問題在於獲取索引處的元素。 –