2014-04-23 96 views
0

我正在嘗試使用VB.net的XML解析功能在VB.net中進行節點解析XML解析

下面是一些從Google流量導向API返回的XML。

enter image description here

我VB.net代碼來獲得的總距離值

returnedDistanceMeters = returnedXML...<route>...<leg>...<distance>...<value>.Value 

但它是「短切」在第一個「臺階」節點的值,並給了我88,其中我想要193108.我如何避免它跳到名爲「距離」的第一個節點?

回答

0

我不知道是否有更好的方法。但每次我必須在.net上使用xml時,我更喜歡使用xsd.exe來創建一個類。

http://msdn.microsoft.com/en-us/library/x6c1kb0s(v=vs.110).aspx

添加.vb文件到您的項目後,您可以使用此功能從XML文件初始化類:

Private Function getTraficFromFile(ByVal path As String) As trafic 
    Dim stream As New IO.StreamReader(path) 
    Dim ser As New Xml.Serialization.XmlSerializer(GetType(trafic)) 
    Dim mytrafic As New trafic 
    mytrafic = CType(ser.Deserialize(stream), trafic) 
    stream.Close() 

    Return mytrafic 
End Function 

您可以訪問像普通的屬性的XML值,在你的情況是這樣的:

Dim mytraffic as trafic = getTraficFromFile(path) 
MsgBox(mytraffic.route.leg.step(19).distance) 
+0

這很酷,並且我嘗試了一個好主意。問題是步驟(19)的部分是可變的。它需要忽略所有的步驟節點並從距離中取值。 – bendecko

+1

@bendecko我沒有意識到距離是在「步驟」之外。您可以通過類的常見屬性來訪問它:MsgBox(mytraffic.route.leg.distance) – Rumpelstinsk