【问题标题】:Classic ASP reading XML values经典 ASP 读取 XML 值
【发布时间】:2013-04-16 11:05:17
【问题描述】:

我正在尝试使用 google maps api 定义 2 点之间的行驶距离。它返回一个我加载到 XMLDOM 对象中的 XML。但是,我似乎无法在任何地方找到如何在子中获取子中子的值...我已阅读 Microsoft 教程,但它没有显示如何从 XML 中检索值。

一个示例 XML 是:

<DistanceMatrixResponse>
<status>OK</status>
<origin_address>Gentsesteenweg 5, 9200 Dendermonde, België</origin_address>
<destination_address>Veerstraat 39, 9200 Dendermonde, België</destination_address>
<row>
    <element>
        <status>OK</status>
        <duration>
            <value>117</value>
            <text>2 min.</text>
        </duration>
        <distance>
            <value>1061</value>
            <text>1,1 km</text>
        </distance>
    </element>
</row>
</DistanceMatrixResponse>

我的代码部分是:

Set XmlObj = Server.CreateObject("Microsoft.XMLHTTP")
strURL = "http://maps.googleapis.com/maps/api/distancematrix/xml?origins=" & dblFromLatitude & "+" & dblFromLongitude & "&destinations=" & dblToLatitude & "+" & dblToLongitude & "&mode=driving&language=" & strLanguage & "&sensor=false"
'DebugFile strURL
XmlObj.Open "POST", strURL, false
XmlObj.send      
strResponse = XmlObj.responseText
Set XmlObj = Nothing


Set xmlLongLat = Server.CreateObject("Microsoft.XMLDOM")
xmlLongLat.async=false
xmlLongLat.loadXML(strResponse)

If Not xmlLongLat.GetElementsByTagName("DistanceMatrixResponse")(0).ChildNodes(0).GetElementsByTagName("row")(0).ChildNodes(0).GetElementsByTagName("element")(0).ChildNodes(0).GetElementsByTagName("distance")(0).ChildNodes(0) Is Nothing Then

    dblDrivingDistance = Round(CDbl(Nz(xxmlLongLat.GetElementsByTagName("DistanceMatrixResponse")(0).ChildNodes(0).GetElementsByTagName("row")(0).ChildNodes(0).GetElementsByTagName("element")(0).ChildNodes(0).GetElementsByTagName("distance")(0).ChildNodes(0).NodeValue, 0))/1000,2)
Else 'xmlLongLat.GetElementsByTagName("element")(0) Is Nothing Then
    dblDrivingDistance = 0
    DebugFile "fgfzefzef"
End If 'xmlLongLat.GetElementsByTagName("element")(0) Is Nothing Then

Set xmlLongLat = Nothing    

我想获得“距离”的“价值”,但尽管尝试了一切,但我似乎并没有成功

【问题讨论】:

  • 您是否已经尝试过“逐步”方法?为什么不将响应存储到变量中?

标签: xml asp-classic


【解决方案1】:
xmlDoc.setProperty "SelectionLanguage", "XPath"
node = xmlDoc.selectSingleNode("/row/elelemnt/distance/value").innerText

或类似的 - 使用 XPath

【讨论】:

  • 添加 "xmlLongLat.setProperty "SelectionLanguage", "XPath" 设置节点 = xmlLongLat.selectSingleNode("/DistanceMatrixResponse/row/element/distance/value") dblDrivingDistance = Nz(node.text,0) " 在 loadXML 在最后一行返回 "Object required: 'node'" 错误之后。看起来 XML 从未加载或什么的
  • 我试图查询谷歌地图行驶距离 api,但似乎我已经使用了我所有的日常查询,这就是它不起作用的原因。应该是 "node = xmlDoc.selectSingleNode("/DistanceMatrixResponse/row/elelemnt/distance/value").text" 才正确
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多