Excel中的XML名称空间

Excel中的XML名称空间,xml,excel,namespaces,xml-namespaces,Xml,Excel,Namespaces,Xml Namespaces,我正在尝试使用Excel中的OpenStreetMap旅行时间构建距离矩阵。我正在使用YOURS API和Google Maps API excel模块作为参考() 这是我试图将XML引入Excel的一个示例: 当前我的VB代码如下所示: 函数G_TIME(平面为字符串、Flon为字符串、Tlat为字符串、Tlon为字符串)为双精度 '需要对Microsoft XML v6.0的引用 '在bit.ly/parseXML处绘制stackoverflow答案 将myRequest设置为XMLHTTP

我正在尝试使用Excel中的OpenStreetMap旅行时间构建距离矩阵。我正在使用YOURS API和Google Maps API excel模块作为参考()

这是我试图将XML引入Excel的一个示例:

当前我的VB代码如下所示:

函数G_TIME(平面为字符串、Flon为字符串、Tlat为字符串、Tlon为字符串)为双精度
'需要对Microsoft XML v6.0的引用
'在bit.ly/parseXML处绘制stackoverflow答案
将myRequest设置为XMLHTTP60
将myDomDoc设置为DOMDocument60
Dim timeNode作为IXMLDOMNode
G_时间=0
关于错误转到出口
'检查并清洁输入
'原点=替换(原点,“,“%20”)
'目的地=替换(目的地,“,“%20”)
'从Google Maps API读取XML数据
Set myRequest=New XMLHTTP60
'我的请求。打开“获取”http://maps.googleapis.com/maps/api/directions/xml?origin=" _
“&Origin&”&destination=“&destination&”&sensor=false”,false
我的请求。打开“获取”http://www.yournavigation.org/api/1.0/gosmore.php?format=kml&flat=“&Flat&”&flon=“&flon&”&tlat=“&tlat&”&tlon=“&tlon&”&v=motorcar&fast=1&layer=mapnik”,False
我的请求。发送
'使用XPath使XML可读
设置myDomDoc=newdomdocument60
myDomDoc.LoadXML myRequest.responseText
'获取时间节点值
设置timeNode=myDomDoc.SelectSingleNode(//Document/traveltime)
'如果Format=“Decimal”则'以小数形式返回-30分钟为0.5小时
“G_TIME=timeNode.Text”一小时内的秒数
“Else”以Excel的00:00:00日期格式返回-30分钟为00:30:00
G_TIME=timeNode.Text“一天中的秒数”
"完"
出境:
“收拾
设置timeNode=Nothing
设置myDomDoc=Nothing
设置myRequest=Nothing
端函数
我认为问题在于:

Set timeNode = myDomDoc.SelectSingleNode("//Document/traveltime")
YoursXML使用Google Earth KML样式,需要为Excel定义。我曾尝试使用XmlNamespaceManager,但无法使其正常工作。我想我需要导入一些东西,但我不熟悉VB for Excel,所以我不知道在哪里做


感谢您的帮助

对Microsoft的DOMDocuments使用XPath查询时,默认名称空间存在问题。您需要为默认名称空间指定一个前缀,然后在XPath查询中使用该前缀-如下所示:

Set myDomDoc = New DOMDocument60
myDomDoc.loadXML myRequest.responseText
myDomDoc.setProperty "SelectionNamespaces", "xmlns:r='http://earth.google.com/kml/2.0'"

' Get the time node value
Set timeNode = myDomDoc.selectSingleNode("//r:Document/r:traveltime")
更多关于这方面的信息可以找到