我對編程不是很熟悉,并且對通過網路搜索和 YT 了解得足夠多。但這讓我迷失了方向。
我正在嘗試決議在線資料庫以獲取與業余無線電呼號相關的資訊。在這種情況下,下面的代碼旨在呼叫資料庫并“登錄”以獲取會話 ID。
我已經使用 Googlemaps 作為示例根據 YT 視頻格式化了代碼。我可以創建 URL 并提交它,查看回應文本并驗證我有一個會話 ID。我可以查詢第一個子節點并讀取該值并從那里停止。
當我運行代碼時,我得到了這個:
請求正常 QRZDatabase
我無法通過這一點來讀取內部節點。在這一點上我迷路了。
這是 XML 的格式
<QRZDatabase xmlns="http://xmldata.qrz.com" version="1.34">
<Session>
<Key>c46e1c7e880208b6e324b229083b9d4d</Key>
<Count>4246</Count>
<SubExp>Mon Oct 17 23:51:57 2022</SubExp>
<GMTime>Mon Oct 25 23:49:17 2021</GMTime>
<Remark>cpu: 0.194s</Remark>
</Session>
</QRZDatabase>
我的代碼:
Sub test()
'Create Request
Dim xml_Obj As MSXML2.XMLHTTP60
Set xml_Obj = New MSXML2.XMLHTTP60
Dim baseURL As String
Dim uName As String
Dim pWord As String
Dim sURL As String
'build the URL components
baseURL = "http://xmldata.qrz.com/xml/current/?"
uName = "username=w4gfq;"
pWord = "password=********"
'sURL = "http://xmldata.qrz.com/xml/current/?username=w4gfq;password=*****"
sURL = baseURL uName pWord
'Debug.Print sURL
xml_Obj.Open "GET", sURL, False
xml_Obj.send
Debug.Print "The request was " xml_Obj.StatusText
'Debug.Print xml_Obj.responseText
'Create Document
Dim XDoc As MSXML2.DOMDocument60
Dim xNodes As IXMLDOMNodeList
Dim xNode As MSXML2.IXMLDOMNode
Set XDoc = New MSXML2.DOMDocument60
XDoc.LoadXML (xml_Obj.ResponseText)
'Debug.Print xml_Obj.ResponseText
Debug.Print XDoc.ChildNodes.Item(1).BaseName
Set xNodes = XDoc.SelectNodes("QRZDatabase/Session")
For Each xNode In xNodes
Debug.Print "----------------"
Debug.Print xNode.SelectSingleNode("Key").Text
Next
End Sub
uj5u.com熱心網友回復:
由于您的 XML 有一個命名空間,我相信您的 XPath 也需要處理它。
試試下面的代碼:
Sub test()
'Create Request
Dim xml_Obj As MSXML2.XMLHTTP60
Set xml_Obj = New MSXML2.XMLHTTP60
Dim baseURL As String
Dim uName As String
Dim pWord As String
Dim sURL As String
'build the URL components
baseURL = "http://xmldata.qrz.com/xml/current/?"
uName = "username=w4gfq;"
pWord = "password=********"
'sURL = "http://xmldata.qrz.com/xml/current/?username=w4gfq;password=*****"
sURL = baseURL uName pWord
'Debug.Print sURL
xml_Obj.Open "GET", sURL, False
xml_Obj.send
Debug.Print "The request was " xml_Obj.StatusText
'Create Document
Dim XDoc As MSXML2.DOMDocument60
Dim xNodes As MSXML2.IXMLDOMElement
Dim xNode As MSXML2.IXMLDOMElement
Set XDoc = New MSXML2.DOMDocument60
XDoc.LoadXML xml_Obj.responseText
XDoc.SetProperty "SelectionNamespaces", "xmlns:qrz=""http://xmldata.qrz.com"""
Set xNodes = XDoc.DocumentElement.SelectSingleNode("qrz:Session")
For Each xNode In xNodes.ChildNodes
Debug.Print "----------------"
Debug.Print xNode.BaseName & ": " & xNode.Text
Next
End Sub
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/339458.html
上一篇:VBA-從不同的字串創建動態變數
