【问题标题】:Step over Node in VB.net XML parsing在 VB.net XML 解析中跳过 Node
【发布时间】:2014-04-23 11:32:15
【问题描述】:

我正在尝试使用 VB.net 的 XML 解析功能

这是从 Google 的交通路线 API 返回的一些 XML。

我获取总距离值的 VB.net 代码是

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

但它是第一个“step”节点中的值的“捷径”,给了我 88 我想要的 193108。如何避免它跳转到第一个名为“distance”的节点?

【问题讨论】:

    标签: xml vb.net


    【解决方案1】:

    不知道有没有更好的办法。但每次我必须在 .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)
    

    【讨论】:

    • 这很酷,我试试这个是个好主意。问题是 step(19) 部分是可变的。它需要忽略所有步骤节点并从距离中获取值。
    • @bendecko 我没有意识到距离超出了“一步”。您可以将其作为类的常用属性访问:MsgBox(mytraffic.route.leg.distance)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多