需要在VB6中解析XML [重复]

问题描述 投票:0回答:1

这个问题在这里已有答案:

我有点老了,我需要能够在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个小时试图解决这个问题,我确信有一个简单的解决方案,但我无法弄清楚它是什么。

干杯,

vb6
1个回答
-2
投票

如果你单独得到每个结果,你需要的只是一个基本的帮助函数来标记你的输入数据,如下所示:

' 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

此外,如果需要,您可以轻松扩展上面的标记器,以将多个结果添加到数组中。

© www.soinside.com 2019 - 2024. All rights reserved.