2014-07-12 47 views
1

使用VB.net軸運算符(... /。/ @)如何選擇/迭代具有特定子字符串的節點。選擇包含VB.net軸符號中子字符串的XML節點

E.g.

採取一些XML片段是這樣的:

<Route name="Fly from London Heathrow" distance="1192.88" duration="355"> 
<IndicativePrice price="163" currency="USD" isFreeTransfer="0"/> 
<Stop name="Surbiton" pos="51.39301,-0.30677" kind="town"/> 
<Stop name="Kingston Upon Thames, Kingston" pos="51.41182,-0.3006" kind="station"/> 
<Stop name="London Heathrow" pos="51.47034,-0.45342" kind="airport" code="LHR"/> 
<Stop name="Barcelona" pos="41.30373,2.07315" kind="airport" code="BCN"/> 
<Stop name="Barcelona" pos="41.38702,2.17004" kind="city"/> 
[SO-point 1] 
<TransitSegment kind="bus" subkind="bus" vehicle="bus" isMajor="0" isImperial="1" ..."></TransitSegment> 
<TransitSegment kind="bus" subkind="bus" vehicle="bus" isMajor="0" isImperial="1" distance="18.4 ..."></TransitSegment> 
<FlightSegment kind="flight" isMajor="1" distance="1146.72" duration="120" sCode="LHR" tCode="BCN"></FlightSegment> 
<TransitSegment kind="train" subkind="train" vehicle="train" isMajor="0" isImperial="0" distance="25.07" duration="25" sName="Aeropuerto de Prat" sPos="41.30426,2.07352" sCode="7172400" tName="Barcelona P.Gracia" tPos="41.38725,2.16866" tCode="7100063" path=".."></TransitSegment> 
[SO-point 2] 
</Route> 

我可以重複這樣的站點:

For Each routeStop In route.<ns:Stop> 
       Dim nextStop As New r2rSearchResponseRoutes.r2rSearchResponseStops 
       nextStop.kind = [email protected] 
       nextStop.name = [email protected] 
       nextStop.code = [email protected] 
       nextStop.pos = [email protected] 

       nextRoute.listOfStops.Add(nextStop) 
      Next 

我將如何選擇針對例如有一子的任何節點節點名稱中的「Segment」如上例所示?示於上述的[SO-點1]〜[SO-點2]

回答

0

您需要使用LINQ方法來過濾XML節點,例如:

For Each s As XElement In route.Elements().Where(Function(x) x.Name.LocalName.Contains("Segment")) 
    Console.WriteLine(s.ToString()) 
Next 
相關問題