这个问题在这里已有答案:
我有点老了,我需要能够在VB6中解析这个文档。
<ip>
<results>
<result>
<ip>104.145.4.78</ip>
<host>104.145.4.78</host>
<isp>Allstream Corp.</isp>
<city>Vancouver</city>
<countrycode>CA</countrycode>
<countryname>Canada</countryname>
<latitude>49.2551</latitude>
<longitude>-123.0667</longitude>
</result>
</results>
</ip>
有一个网站提供的位置和IP地址,我需要将城市名称放在大约6000个地址,这是我能想到的最好的方式,除了我找不到一个简单的方法来从这个页面获取数据。
这是我正在使用的实际网站:
http://api.geoiplookup.net/?query=104.145.4.78
这里的任何帮助都会受到极大的关注。我花了大约6个小时试图解决这个问题,我确信有一个简单的解决方案,但我无法弄清楚它是什么。
干杯,
如果你单独得到每个结果,你需要的只是一个基本的帮助函数来标记你的输入数据,如下所示:
' old school tokenizer
Public Function GetToken(ByVal xmlIn As String, ByVal tagName As String) As Variant
Dim l as long, p1 As Long, p2 As Long
l = Len(tagName)
p1 = InStr(1, xmlIn, "<" + tagName + ">")
p2 = InStr(p1, xmlIn, "</" + tagName + ">")
GetToken = Mid(xmlIn, p1 + l + 2, p2 - p1 - l - 2)
End Function
...您可以使用如下:
' assume your data is in xml
Dim result As String, ip As String, city As String
result = GetToken(xml, "result")
ip = GetToken(result, "ip")
city = GetToken(result, "city")
结果:
Debug.Print ip, city => 104.145.4.78 Vancouver
此外,如果需要,您可以轻松扩展上面的标记器,以将多个结果添加到数组中。